<分区>
我对 9501/100.0f 进行了除法,希望得到 95.01f 的结果,但由于某些不正常的原因,结果是 95.01000000002f。
我知道舍入错误,而且将两个较大的 float 相除会得到不正确的结果,但这两个数字相对较小,它们不应该给出错误的答案。
我已将 float 更改为 double ,但结果相同。
所以我的答案是,为什么我会看到这个错误的输出?
最终解决方法是不将数字复制到字符串并返回。
<分区>
我对 9501/100.0f 进行了除法,希望得到 95.01f 的结果,但由于某些不正常的原因,结果是 95.01000000002f。
我知道舍入错误,而且将两个较大的 float 相除会得到不正确的结果,但这两个数字相对较小,它们不应该给出错误的答案。
我已将 float 更改为 double ,但结果相同。
所以我的答案是,为什么我会看到这个错误的输出?
最终解决方法是不将数字复制到字符串并返回。
最佳答案
float 并不精确,处理它们有很多特殊之处。
What Every Computer Scientist Should Know About Floating-Point Arithmetic
我也喜欢 Bruce Dawson 的 blog entries关于浮点值。
关于c++ - 将两个 float 相除并不能给出准确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668061/