C++ 划分两个浮点数并不';我不能给出确切的结果
我将9501/100.0f除以,期望得到95.01f的结果,但由于某些不正常的原因,结果是95.01000000002f 我知道舍入误差,也知道将两个较大的浮点数相除可能会产生不正确的结果,但这两个数字相对较小,不应该给出不好的答案 我已将浮动更改为双倍,但看到的结果相同 所以我的答案是,为什么我看到这个错误的输出C++ 划分两个浮点数并不';我不能给出确切的结果,c++,double,precision,C++,Double,Precision,我将9501/100.0f除以,期望得到95.01f的结果,但由于某些不正常的原因,结果是95.01000000002f 我知道舍入误差,也知道将两个较大的浮点数相除可能会产生不正确的结果,但这两个数字相对较小,不应该给出不好的答案 我已将浮动更改为双倍,但看到的结果相同 所以我的答案是,为什么我看到这个错误的输出 最终解决方法是不将数字复制到字符串和字符串。浮点数不精确,处理浮点数有很多特点 我也喜欢Bruce Dawson关于浮点值的论述。浮点数字并不精确,处理它们有很多特点 我也喜欢布
最终解决方法是不将数字复制到字符串和字符串。浮点数不精确,处理浮点数有很多特点
我也喜欢Bruce Dawson关于浮点值的论述。浮点数字并不精确,处理它们有很多特点
我也喜欢布鲁斯·道森关于浮点值的著作。啊,很好,我们中的另一个人已经成为编程教会的一员:)
浮点不精确,精度因机器而异。1.0f!=1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011等等(我只是在这里选择了任意数字)。啊,很好,我们中的另一个人已经成为编程教会的一员:)
浮点不精确,精度因机器而异。1.0f!=1.000000000000000000000000000000等等,更像是1.000000100300340011等等(我只是在这里选择了任意数字)。浮点数是用二进制表示的精度有限的数字 预期结果和实际结果之间的误差是由于数字95.01在二进制表示中是无限周期的 Double只有51个二进制数字,因此在将数字存储到Double-precision之前必须进行一些舍入。单精度只有23位 在有限精度浮点数中表示95.01是不可能没有任何误差的。
但是,您可以信任前6-9位十进制数字,因此您应该使用某种有意义的完整格式来格式化数字。浮点数是用精度有限的二进制表示的数字 预期结果和实际结果之间的误差是由于数字95.01在二进制表示中是无限周期的 Double只有51个二进制数字,因此在将数字存储到Double-precision之前必须进行一些舍入。单精度只有23位 在有限精度浮点数中表示95.01是不可能没有任何误差的。
但是,您可以信任前6-9位十进制数字,因此您应该使用某种有意义的完整格式对数字进行格式化。其他人已经发现了浮点算术的神奇特性。这是一个成熟的时刻。这只是一个常见的舍入误差。浮点很难精确地除以非2的幂。你刚才注意到100确实不是2.0的幂。二进制中的1是1/2+1/4+1/8+1/16+…+1/32876,0.1在base2中重复出现,无法表示它。就像尝试做1/3的十进制运算一样,其他人已经发现了浮点算术的神奇特性。这是一个成熟的时刻。这只是一个常见的舍入误差。浮点很难精确地除以非2的幂。你刚才注意到100确实不是2.0的幂。二进制中的1是1/2+1/4+1/8+1/16+…+1/32876,0.1在base2中重复出现,无法表示它。就像试着做1/3的小数。嗯,不,1.0f是1.0000000。。。任何合理的浮点实现。你知道有一个没有吗?嗯,不,1.0f是1.0000000。。。任何合理的浮点实现。你知道有一个地方没有吗?