利用Java的双精度数据类型(double),可以实现有效数字在16位以内的两数的精确加法计算,高于Excel的11位精度。
有意思的是,对于人脑,加法的精度几乎是无限大的。这正应了Java how to program一书中作者引用的一句名言:
“Man is still the most extraordinary computer of all. —John F. Kennedy”
代码如下:
package example;
//Fig. 3.1: Addition.java
//Addition program that displays the sum of two numbers.
//By Pandenghuang@163.com
import javax.swing.JOptionPane;; // program uses class Scanner
public class AdditionwithSwing
{
// main method begins execution of Java application
public static void main(String[] args)
{
double number1=Double.parseDouble(JOptionPane.showInputDialog("请输入第一个数字:")); // first number to add
double number2=Double.parseDouble(JOptionPane.showInputDialog("请输入第二个数字:")); // second number to add
double sum=number1+number2; // sum of number1 and number2
String message=String.format("您输入的数字为:%.14f和%.14f,两者之和为:%1.14f",number1,number2,sum);
JOptionPane.showMessageDialog(null, message);
} // end method main
} // end class Addition
运行截屏如下:
人脑、Java和Excel的对比如下:
Decimal poins>=15
Number1: 1.012345678901235
Number2: 9.987678976332452
Sum by Human:11.000024655233687
Sum by Java:11.000024655233688
Sum by Excel:11.000024655233700
Precesion ranking: Human>Java>Excel
Decimal poins<15
Number1: 1.01234567890123
Number2: 9.98767897633245
Sum by Human:11.00002465523368
Sum by Java:11.00002465523368
Sum by Excel:11.00002465523370
Precesion ranking: Human=Java>Excel