摘要 探讨 的计算精度问题。
从计算机的错误计算(九十九)知, 在IEEE 754-2019的列表中,并且定义域是实数域。但是,截止撰写本节内容时,本文作者仍未找到内置了该函数的语言或编译器。
例1. 已知 计算
若在LibreOffice中计算,则有
若在Excel中计算,则有
若在ISRealsoft中输入 10^(222. 222)-1,则输出为 0.1667247212551063e223 . 这样,LibreOffice与Excel均有3位错误数字,错误率为 3/16 = 18.75% .
例2. 计算
不妨用Java代码编程计算:
import java.lang.Math;
import java.text.DecimalFormat;
public class exp10m1{
public static void main(String[] args) {
double x = 2.876;
double result = Math.pow(10,x)-1;
String formatted = String.format("%.13f", result);
System.out.println(formatted);
}
}
则运行后输出为 750.6228940182053 .
若在Visual Studio 2010下编程计算(部分主要语句):
#include <math.h>
#include <stdlib.h>
double x=2.876;
double y=pow(10,x)-1;
printf("%.13lf\n",y);
则输出与Java的输出完全相同。
然而,若在ISRealsoft中输入 10^2.876-1,则16位的输出为 0.7506228940182055e3 . 这样,二者的输出中均有1位错误数字。
点评:两个案例揭示了错误数字的个数是有规律的:其等于自变量的整数位数。