java中,0.1+0.2不等于0.3
计算机只能识别0和1,需要先把数字转化为二进制,而0.1 的二进制表示为 0.0 0011 0011 0011… ,十进制就是0.1000000000000000055511151231257827021181583404541015625。0.1 在计算机中无法完整表达,会有精度缺失。0.2也是同样的道理。
package cn.tedu.datetype;
import java.math.BigDecimal;
public class MissNum {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(0.1);//计算机默认你想打印0.1
System.out.println(0.1+0.2==0.3);//计算机知道两个数在比较,所以会比较精确计算两个值
System.out.println(0.1+0.2);//两个浮点数相加,计算机也会精确计算出值
System.out.println(new BigDecimal(0.1));//打印java中0.1的具体值;注意导包
System.out.println(new BigDecimal(0.2));
System.out.println(new BigDecimal(0.1+0.2));
}
}