【发布时间】:2015-02-20 06:43:26
【问题描述】:
float 数据类型是单精度 32 位 IEEE 754 浮点数,double 数据类型是双精度 64 位 IEEE 754 浮点数。
这是什么意思?我什么时候应该使用 float 而不是 double 或反之亦然?
【问题讨论】:
-
当内存使用很关键时,您应该使用浮点数而不是双精度数。如果您需要更精确的计算,请使用双精度数。
-
@Everv0id:我不确定在任何情况下内存如此紧张以至于不得不牺牲准确性来换取空间。 (您正在使用 Java,看在上帝的份上……)在某些情况下可能需要它,但在我的实践中,我很少看到它。如果您想详细说明为什么您认为这是一个好主意,那么提供一个带有 for-instance 的答案将是一个值得补充的内容。
-
@Makoto 实际上,我从来没有使用过花车,只有双打。但是可能有一些应用程序(理论上)应该保留大量的浮点数,因此 2 倍的内存使用可能是至关重要的。理论上,ofc;实际上,您总是可以购买另一台服务器。
-
我使用了 4 字节甚至 2 字节的固定精度数字来节省内存,但除非你有数十亿个这样的数字,否则不太值得。您写“double”而不是“float”(它多了一个字母)所花费的时间比您使用的额外内存价值多 1000 倍,但是如果使用
double而不是float可以节省与精度相关的时间错误,值得。
标签: java floating-point double ieee-754