双精度的数量级

时间:2013-03-19 06:54:28

标签: fortran double-precision

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

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

谢谢你, 普拉迪普

1 个答案:

答案 0 :(得分:2)

Double precision floating point具有以下格式

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

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

Single precision floating point具有以下格式

  • 符号位:1位
  • 指数宽度:8位
  • 显着精确度:24(明确存储23个)
  

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

您遇到的最大差异表示精度损失,无论是转换为单精度。

你知道这两种方法中哪一种更准确吗?计算速度和精度之间的权衡是主要区别还是算法之间的数值不太稳定?输入的精度是多少?如果您的输入不是精确的......或者它可能意味着在行星轨迹上错过火星,则精度的8位十进制数的差异可能不相关。