String to Float 在 java 中不起作用?

String to Float is not working in java?

问题很简单:

float f1 = Float.parseFloat("41.975779") 
//Value for f1 is 41.97578  -> An error of 1ppm

更糟糕的是!!

float f2 = Float.parseFloat("41.975645") 
//Value for f2 is 41.975643  -> An error of 2ppm

不管我用Float.parseFloat还是Float.valueOf,它们都给出相同的结果。

注意:这个问题是我在 android 中编程时出现的,我没有在 pure-java 中尝试过,但我认为结果是一样的。

您的字符串到浮点数的转换与宣传的一样完全,尽管显然与您预期的不完全一样:-)

IEEE754 单精度浮点值(在 float 中使用)只有大约七位十进制数字的精度。

如果您想要更高的精度,请使用 double,它提供大约 15 位十进制数字,或者切换到 BigDecimal 以获得任意精度。

请注意,没有任何编码方案可以为您提供 无限 精度,总会有 一些 值无法表示(当然除非你切换到符号表示)。