1. 特殊说明:
1.1默认的浮点直接量为double型,如果要表示float类型的直接量,需要加"f"或者"F" 后缀。
例如:float f1 = 3.14 会有编译错误,应该写成3.14f 或者3.14F
1.2 double型再运算时会出现舍入误差
1/2--------------------0.5
1/3-------------------0.333333333
2/3-------------------0.666666666
我们日常使用的都是十进制,例如上面的1/2和2/3 是无法用十进制精确表示的
计算机使用的是2进制,同样有些数使用2进制是不能够精确表示的,例如2进制中无法精确表示1/10,通过代码测试如下:
public class Hello {
public static void main(String[] args) {
double money = 3.0;
double price = 2.9;
System.out.println(money-price);
}
}
执行main 方法,你会发现输出的结果是:0.10000000000000009,java中成这种现象为"舍入误差",如果需要精确的运算可以考虑放弃double或者float而采用BigDecimal类来实现
BigDecimal b1 = new BigDecimal("3.0");
BigDecimal b2 = new BigDecimal("2.9");
System.out.println(b1.subtract(b2).doubleValue());
在运算过程中BigDecimal构造中必须使用字符串,如果使用double类型同样还是会有舍入误差出现
- 常用数据类型介绍
2.1int介绍:
2.1.1 int 表示整形,4个字节,范围是-21个多亿-21个多亿
int a = 250;//250为整数直接量,默认为int型
int b = 10000000000;//编译错误10000000000默认为int型,但是超范围了
2.1.2两个整数相除,结果还是整数,小数位无条件舍弃
System.out.println(5/2);//输出结果2
System.out.println(2/5);//输出结果0
2.1.3运算时超出范围会发生溢出,溢出是需要避免的
2.2long :长整形,8个字节,范围很大很大
2.2.1长整形直接量为在数字后面加l或L
2.2.2算数运算时又可能超范围,建议在第一个数字后加l或者L,例如 long l = 100000000000L30010000