![]() |
1
8
C标准对浮点运算的精度没有任何要求。准确度为 定义的实现 这意味着需要实现来记录它。然而,实施过程中留下了一个重要的“出局”:(§5.2.4.2.2第6段,增加了重点。)
事实上,gcc通过指定 the accuracy is unknown 尽管如此,即使不能保证,glibc计算的准确性也相当好。
已知MS libc实现偶尔会为
在x86架构上,大多数实现都尝试实现IEEE 754,因为本机浮点表示符合。然而,在2008年修订版之前,IEEE-754只要求从
如果你真的想使用
SO实际上充满了由这个特定问题引起的问题。参见:
毫无疑问还有更多。 |
![]() |
2
3
一些实现评估
glibc 例如,具有“C” implementations ,以及具有查找表、多项式近似等的平台特定实现。许多Sun/BSD衍生物似乎将整数指数作为一种特殊情况来处理。 更重要的是,IEEE-754不需要它。它也没有规定结果所需的准确性。油嘴滑舌的 documents 它的最大ulp错误,尽管此页面可能不是最新的。
总之,
不要假设精确的积分结果
即使
|
![]() |
3
0
在平台上
|
![]() |
4
0
这取决于整数和双整数的大小。 使用32位整数和64位IEEE 754双精度,那么它将为所有可能的整数提供正确的答案。 IEEE 754二进制64浮点数(这是大多数现代机器上常用的双精度表示)可以精确表示所有整数[0,2^53]。 |
![]() |
June-Solstice · 元组到numpy,数据准确性 2 年前 |
![]() |
Sorawee Porncharoenwase · 浮点溢出为负 7 年前 |
![]() |
v78 · 不损失精度的第n项的有效逼近 9 年前 |
![]() |
FranXh · JavaScript:toFixed(…)方法的缺点 10 年前 |
|
nickg · If语句不起作用(Python) 11 年前 |
![]() |
Metrics · Stata中的数据精度 11 年前 |