Floating point 双精度/浮点数在;“真的”;结果不够准确?

Floating point 双精度/浮点数在;“真的”;结果不够准确?,floating-point,language-agnostic,Floating Point,Language Agnostic,我知道浮点数是不准确的。然而,我的问题是,结果四舍五入到哪个“下一个”数字 是下一个高一点的吗?下一个低一点的?这是最近的吗 我的猜测是,这是一个尾数发生了什么的问题,但我不确定它是否只是被截断了,不管是什么,还是取决于结果是“从下方”(例如总和)还是“从上方”(例如差异)创建的 或者更简单,而且完全是任意的,仅取决于编译器/体系结构?这取决于实现,但大多数遵循IEEE 754标准的实现都有方法选择几个舍入选项之一 默认模式是四舍五入到最接近的可表示数字,如果是平局,则四舍五入到偶数(即最低有效

我知道浮点数是不准确的。然而,我的问题是,结果四舍五入到哪个“下一个”数字

是下一个高一点的吗?下一个低一点的?这是最近的吗

我的猜测是,这是一个尾数发生了什么的问题,但我不确定它是否只是被截断了,不管是什么,还是取决于结果是“从下方”(例如总和)还是“从上方”(例如差异)创建的


或者更简单,而且完全是任意的,仅取决于编译器/体系结构?

这取决于实现,但大多数遵循IEEE 754标准的实现都有方法选择几个舍入选项之一

默认模式是四舍五入到最接近的可表示数字,如果是平局,则四舍五入到偶数(即最低有效位等于零的数字)


有关更多信息,请参阅。

编译平台很可能使用IEEE 754

对于基本运算,+,-,*,/,舍入不是任意的。IEEE754定义了几个。如果没有显式设置,则默认模式是将结果四舍五入到最接近的可表示值(“四舍五入到最接近,等于偶数”)。IEEE 754中对细节的关注是这样的:一条规则描述了当结果与两个候选代表值相等时该怎么做

对于更复杂的函数,例如正弦函数,它取决于实现。最不精确的实现甚至可能产生一个结果,它不是两个最接近真实结果的可表示值中的任何一个

David Golberg的《每一位计算机科学家都应该知道的浮点运算》经常在这个网站上被随意推荐,只要出现浮点运算,但在这种情况下,你可能会喜欢阅读它