Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 划分两个浮点数并不';我不能给出确切的结果_C++_Double_Precision - Fatal编程技术网

C++ 划分两个浮点数并不';我不能给出确切的结果

C++ 划分两个浮点数并不';我不能给出确切的结果,c++,double,precision,C++,Double,Precision,我将9501/100.0f除以,期望得到95.01f的结果,但由于某些不正常的原因,结果是95.01000000002f 我知道舍入误差,也知道将两个较大的浮点数相除可能会产生不正确的结果,但这两个数字相对较小,不应该给出不好的答案 我已将浮动更改为双倍,但看到的结果相同 所以我的答案是,为什么我看到这个错误的输出 最终解决方法是不将数字复制到字符串和字符串。浮点数不精确,处理浮点数有很多特点 我也喜欢Bruce Dawson关于浮点值的论述。浮点数字并不精确,处理它们有很多特点 我也喜欢布

我将9501/100.0f除以,期望得到95.01f的结果,但由于某些不正常的原因,结果是95.01000000002f

我知道舍入误差,也知道将两个较大的浮点数相除可能会产生不正确的结果,但这两个数字相对较小,不应该给出不好的答案

我已将浮动更改为双倍,但看到的结果相同

所以我的答案是,为什么我看到这个错误的输出


最终解决方法是不将数字复制到字符串和字符串。

浮点数不精确,处理浮点数有很多特点


我也喜欢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。。。任何合理的浮点实现。你知道有一个地方没有吗?