Binary 除数而不获取垃圾数

Binary 除数而不获取垃圾数,binary,precision,division,Binary,Precision,Division,我正在写一个程序将分数转换成64位浮点二进制。一切正常,但我的代码中有一部分需要“移动逗号”二进制文件(例如,111.0000000000000000000000000000000000000000000000000000),因此我将二进制文件除以十(本例中为三倍)。理想情况下,我会得到1.110000000000000000000000000000000000。然而,我得到1.110000000000000000013010426069826053208089433610439。我怎样才能纠正

我正在写一个程序将分数转换成64位浮点二进制。一切正常,但我的代码中有一部分需要“移动逗号”二进制文件(例如,111.0000000000000000000000000000000000000000000000000000),因此我将二进制文件除以十(本例中为三倍)。理想情况下,我会得到1.110000000000000000000000000000000000。然而,我得到1.110000000000000000013010426069826053208089433610439。我怎样才能纠正这个问题

非常感谢。

你不能。

111.00000000000000000000000000000000000000000000000000001.1100000000000000000000000000000000000000000000000000000在精度方面以二进制表示时完全不同


使用定点小数。

这是不可能的,如中所示


问题在于现代计算机在使用
double
s时无法正确使用绝对精度


double
s使用相对准确度,这意味着相对于数量级或数量级,您的数字将显示得或多或少准确。有些数字甚至可以正确显示,而其他数字则会出现一些小的错误,如<代码> 1/3 <代码>,实际上是<代码> 0 14829、162562473909029、39 47 47、48 48、6328 125 < /代码>,但是由于相对误差小到可以忽略。

您使用C还是C++?如果C++,你应该使用<代码>包含< <代码>。我使用C错误:文件未找到。