动手做实验
public class TestDouble {
public static void main(String args[]) {
System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
System.out.println("4.015 * 100 = " + (4.015 * 100));
System.out.println("123.3 / 100 = " + (123.3 / 100));
}
}
经过运行发现

发现小数点后数字非常多,不是题中的两位小数。其结果不精确。
double类型的数值运算不精确的原因:
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。
在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)
Integer.parseInt方法将 String 转为数字 ( int) 类Integer 属于包 java.lang,它“封装”了一个int类型的整数,因此,它是原始数据类型int的“包装类”。
JOptionPane.showMessageDialog(
null, "The sum is " + sum, "Results", JOptionPane.PLAIN_MESSAGE );
The sum is " + sum 使用运算符 + 连接字面量“The sum is” 和计算结果 sum将String 和其它数据类型相加,结果是一个新的String
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
运行结果为X+Y=100200
300=X+Y
Java中有两种类型的变量 引用类型的变量(Reference variables)
引用一个对象 (变量本身用于存放对象在内存中的位置,以看成是一个指针),故又被称为“对象变量”);
原始数据类型的变量,变量中仅包含数据。
String firstNumber;
String secondNumber;
double number1;
double number2;
如果变量的数据类型是一个类的名字,就是引用类型的变量,它将引用一个对象。
String 是个类(注意类名首字母大写) firstNumber, secondNumber将分别引用两个字符串对象。
如果数据类型是一个原始类型(其名称由小写字母组成),这种类型的变量将直接保存一个原始数据类型的值。
double 是一个原始数据类型 number1, number2变量将保存两个双精度数.
number1 = Double.parseDouble( firstNumber );
number2 = Double.parseDouble( secondNumber );
Double.parseDouble是一个Double类所定义的静态方法
将 String 数据转为double类型的 返回 double类型的数值 记住静态方法调用语法:
类名.静态方法名( 参数 ) Double是原始数据类型double的“包装类”,属于引用类型

浙公网安备 33010602011771号