2

对于两个理论上相等的双精度数之间的减法,我应该期望什么数量级的差异?

我有两个双精度数组。预计它们在理论上是相同的。它们都是通过两种完全不同的方法计算的,因此它们之间存在一些数值差异。我逐个元素地检查了它们,我的最大差异是 6.5557799910909154E-008。我的老板说,对于双精度来说,这是一个非常大的差异,但我认为如果差异是 E-008 的数量级,那就可以了。

谢谢你,普拉迪普

4

1 回答 1

3

双精度浮点具有以下格式

  • 符号位:1位
  • 指数宽度:11 位
  • 有效位精度:53 位(显式存储 52 位)

这给出了 15 - 17 位有效十进制数字的精度。如果将最多 15 位有效小数的十进制字符串转换为 IEEE 754 双精度,然后再转换回相同的有效小数位数,则最终字符串应与原始字符串匹配;如果 IEEE 754 双精度转换为具有至少 17 位有效小数的十进制字符串,然后再转换回双精度,则最终数字必须与原始数字匹配。

单精度浮点具有以下格式

  • 符号位:1位
  • 指数宽度:8位
  • 有效精度:24(23 显式存储)

这给出了 6 到 9 位有效小数位的精度(如果将具有最多 6 个有效小数位的十进制字符串转换为 IEEE 754 单精度,然后转换回相同的有效小数位数,则最终字符串应与原始字符串匹配;和如果将 IEEE 754 单精度转换为具有至少 9 位有效小数的十进制字符串,然后再转换回单精度,则最终数字必须与原始数字匹配。

您遇到的最大差异表明精度损失类似于转换为单精度。

你知道这两种方法哪个更准确吗?主要区别是计算速度和精度之间的权衡,还是其中一种算法在数值上不太稳定?输入的精度是多少?如果您的输入不是那么精确,则 8 位小数的精度差异可能无关紧要……或者这可能意味着在行星轨道上丢失了火星。

于 2013-03-19T07:15:20.247 回答