问题很简单:
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编程时会出现此问题,我没有在纯Java中尝试过,但我认为结果会相同。
您的字符串到float转换的工作方式与广告中所宣传的完全一样,尽管显然不完全符合您的期望:-)
IEEE754单精度浮点值(用于中float
)仅具有大约七个十进制数字的精度。
如果需要更高的精度,请使用double
提供大约15个十进制数字的,或切换到BigDecimal
任意精度。
请注意,没有一种编码方案可以给您无限的精度,总会有一些值无法表示(当然,除非您切换到符号表示)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句