【发布时间】:2013-03-07 18:14:09
【问题描述】:
两个理论上相等的双精度数之间的减法应该有什么数量级的差异?
我有两个双精度数组。预计它们在理论上是相同的。它们都是通过两种完全不同的方法计算的,因此它们之间存在一些数值差异。我逐个元素地检查了它们,我最大的不同是 6.5557799910909154E-008。我的老板说对于双精度来说这是一个非常大的差异,但我认为如果差异是 E-008 的数量级,那就可以了。
谢谢你, 普雷迪普
【问题讨论】:
两个理论上相等的双精度数之间的减法应该有什么数量级的差异?
我有两个双精度数组。预计它们在理论上是相同的。它们都是通过两种完全不同的方法计算的,因此它们之间存在一些数值差异。我逐个元素地检查了它们,我最大的不同是 6.5557799910909154E-008。我的老板说对于双精度来说这是一个非常大的差异,但我认为如果差异是 E-008 的数量级,那就可以了。
谢谢你, 普雷迪普
【问题讨论】:
Double precision floating point 具有以下格式
这给出了 15 - 17 位有效十进制数字的精度。如果将最多 15 个有效小数的十进制字符串转换为 IEEE 754 双精度,然后再转换回相同的有效小数位数,则最终字符串应与原始字符串匹配;如果 IEEE 754 双精度被转换为具有至少 17 位有效小数的十进制字符串,然后再转换回双精度,则最终数字必须与原始数字匹配。
Single precision floating point 具有以下格式
这给出了 6 到 9 位有效小数位的精度(如果将最多 6 位有效小数的十进制字符串转换为 IEEE 754 单精度,然后再转换回相同的有效小数位数,则最终字符串应与原始;并且如果将 IEEE 754 单精度转换为具有至少 9 位有效小数的十进制字符串,然后再转换回单精度,则最终数字必须与原始数字匹配。
您遇到的最大差异表示类似于转换为单精度的精度损失。
你知道这两种方法中哪一种更准确吗?主要区别是计算速度和精度之间的权衡,还是其中一种算法在数值上不太稳定?输入的精度是多少?如果您的输入不是那么精确,则 8 位小数的精度差异可能无关紧要……或者这可能意味着在行星轨道上丢失了火星。
【讨论】: