gpt4 book ai didi

excel - Excel 浮点行为规范

转载 作者:行者123 更新时间:2023-12-04 19:59:37 25 4
gpt4 key购买 nike

尽管 Excel 使用标准的 IEEE754 binary64 格式,但它并不使用相同的算术和比较规则,例如

=0.1+0.2=0.3

返回 TRUE , 和 other examples .

是否在任何地方记录了确切的行为?

最佳答案

做了一些实验后,我建立了以下行为:

  • 如果两个值等于 15 位有效十进制数字(即 printf 术语中的 =),则根据相等运算符( "%.14e" ),两个值“相等”
  • 小于( < )和小于或等于( <= )被定义为与此一致(即,如果在 IEEE 算术下为真,则“Excel 小于”为真,并且值不是“Excel 相等” )。
  • 如果单元格公式中的最终运算符(根据通常的运算符优先级)是 -+ ,并且结果的大小小于第一个参数的 8 ulps(最后一个单位),则结果设置为零。
  • 可以通过将整个表达式包装在括号中来抑制这种行为(或者等效地,您可以将此类包装括号视为运算符)。
  • SUM似乎与 + 的链式序列的行为方式相同。 (阈值似乎是累积和的倒数第二个元素的 8 ulps),但不能通过环绕括号来抑制截断。

  • 请注意,这些是不一致的,因为值可能是“Excel 相等”但具有非零差异,反之亦然。

    因此,如果您想要更接近 Excel 中的 IEEE 算术:
  • 将所有公式括在最后的括号中
  • 使用 (a-b)<0而不是 a<b (对于其他 bool 运算符也是如此)
  • 避免使用 SUM

  • (由于缺少次正规和带符号的零,这仍然不严格)

    关于excel - Excel 浮点行为规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40293983/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com