最大值可以以两位数精度(2位精度)存储在Java float中吗?

时间:2011-02-18 08:39:10

标签: java floating-point

如何找到可以存储在float中的最大两位小数精度值?

根据我的理解,在32位浮点数中,我们有24(23 + 1)用于存储除指数之外的数字。 2 ^ 24是我们可以存储的最大值吗?

提前致谢。 Sriraman

4 个答案:

答案 0 :(得分:2)

2 ^ 24是您可以准确存储的最大整数。您可以存储的最大两位小数值,而不会损失精度。 2 ^一百分之二十四。

注意:甚至0.1& 0.01无法准确存储,但通过舍入,您可以无错误地获得此值。因此,从字面上理解问题,最大值为0.00。 ;)

具有两位精度的最大值接近Float.MAX_VALUE,但我不认为这就是你的意思。

答案 1 :(得分:0)

有关IEEE 754单精度二进制浮点格式的信息,请参见wikipedia

我认为找不到这样的号码是不可能的。 您在谈论基数为10的两个十进制数字的数字,但是您希望将此数字存储为二进制值。

虽然您完全能够在32位浮点数中存储精确值1.00,但您将无法存储0.99。

答案 2 :(得分:0)

您无法在浮点值中指定精度。如果你将自己限制在2个小数位,那么你不会为其他东西获得更多的空间。

答案 3 :(得分:0)

如果您只是想在点之后存储正好两位小数的数字,请将该数字存储100倍作为整数(或长,取决于数字的大小),并在格式上添加点(或逗号) (在解析时删除)。

这更容易控制。