Excel浮点行为规范
尽管Excel使用标准的IEEE754 binary64格式,但它在算术和比较方面并没有使用相同的规则,例如Excel浮点行为规范,excel,floating-point,Excel,Floating Point,尽管Excel使用标准的IEEE754 binary64格式,但它在算术和比较方面并没有使用相同的规则,例如 =0.1+0.2=0.3 返回TRUE,然后返回 确切的行为是否在任何地方记录在案?本文档切题地阐述了这一点: 特别见: 然而,Excel97引入了一种试图纠正错误的优化 对于这个问题。应该是加法还是减法运算的结果 如果值等于或非常接近零,Excel 97及更高版本将 补偿由于转换数据而引入的任何错误 与二进制之间的操作数 如果他们将此“优化”应用于0.1+0.2和0.3之间的差异,
=0.1+0.2=0.3
返回TRUE
,然后返回
确切的行为是否在任何地方记录在案?本文档切题地阐述了这一点: 特别见: 然而,Excel97引入了一种试图纠正错误的优化 对于这个问题。应该是加法还是减法运算的结果 如果值等于或非常接近零,Excel 97及更高版本将 补偿由于转换数据而引入的任何错误 与二进制之间的操作数
如果他们将此“优化”应用于
0.1+0.2
和0.3
之间的差异,则明显将其转换为0,这意味着他们没有严格遵守标准。通过一些实验,我确定了以下行为:
=
),如果两个值等于15位有效十进制数字(即printf行话中的“%.14e”
),则两个值“相等”
- 少于(
我只知道这个链接。它详细介绍了一些与IEEE标准不一致的问题。该页面底部有一个链接,添加了一些(但不多)。