摘要 探讨 与 的计算精度问题。
从计算机的错误计算(九十九)知,运算 与 均被列在IEEE754-2019中。然而,似乎并没有哪种语言实现内置了第二个运算。
例1. 计算 与
不妨在Python 3.12.5 下计算,则有
然而,16位正确值均是 0.3022727657336913e138(ISRealsoft 提供)。Python的输出均有3位错误数字,错误率为 3/16 = 18.75% .
例2. 计算 与
若用Java中pow函数计算:
import java.lang.Math;
public class Exp2{
public static void main(String[] args) {
double x = 1.23;
double y1 = Math.pow(2,x);
double y2 = Math.pow(2,x)-1;
System.out.println(y1);
System.out.println(y2);
}
}
则运行后输出为 5.080603930155159 与 4.080603930155159 .
然而,正确值分别为 0.5080603930155158e1 与 0.4080603930155158e1(ISRealsoft 提供)。这样,Java程序的每个输出中,均有1位错误数字,错误率为 1/16 = 6.25% .
点评:上述二个运算,正如计算机的错误计算(三十二)中所说:每个函数中有约 x 的整数位数位错误数字。