数学库中的除法函数如何处理除法运算符无法做到的精度误差?

Posted

技术标签:

【中文标题】数学库中的除法函数如何处理除法运算符无法做到的精度误差?【英文标题】:How does a division function from a math library take care of precision error, which the division operator fails to do? 【发布时间】:2012-05-21 08:58:17 【问题描述】:

在除以两个浮点值时,由于精度错误,我得到了不正确的答案。例如, 1001.05 / 5.0 应该等于 200.21 ,但我得到了 200.2099999999。

正确的结果是使用我们数学库中的除法函数而不是“/”获得的。那么这个库函数做了哪些额外的事情来纠正精度错误呢?你可以解释一下,或者告诉我有关用于纠正精度误差的标准算法的信息,这个函数一定一直在使用。

【问题讨论】:

也许您可以编辑您的问题,告诉我们您使用的是什么语言,您在谈论什么库? 【参考方案1】:

您的数学库没有使用浮点数,或者在您打印结果时对其进行了四舍五入。 200.21 不能用标准浮点数精确表示。

【讨论】:

+1。除法错误并没有多大问题,而是 200.21 或 1001.05 都不能准确地表示为 IEEE 形式的浮点数。由于输出通常是四舍五入的,所以很多人只是不知道一直存在浮点垃圾。

以上是关于数学库中的除法函数如何处理除法运算符无法做到的精度误差?的主要内容,如果未能解决你的问题,请参考以下文章

Java除法运算的陷阱

matlab除法运算

仅使用位移加法和减法的对数时间整数除法

如何处理库中的函数弃用?

整数除法的数学运算

JAVA 中除法后小数精度问题