java中类型转换、运算精度丢失问题

在java中使用浮点型数据进行运算会造成精度丢失,比如

public class Test8 {
	public static void main(String args[]) {
		int i = 2;
		double j = 1.8;
		System.out.println(i-j);
	}
	
}

经过结果会自动类型转换为double,但是输入仍然不是0.2,而是
java中类型转换、运算精度丢失问题_第1张图片
在java中,一般让我们使用BigDecimal数据类型来解决这一个问题。

public class Test8 {
	public static void main(String args[]) {
		int i = 2;
		double j = 1.8;
		System.out.println(i-j);
		
		System.out.println("-----------------");
//		Test8.test(i, j);
		System.out.println(Test8.test(i, j));
	}
	public static double test(int i, double j) {
		BigDecimal bigDecimal = new BigDecimal(Integer.toString(i));
		BigDecimal bigDecimal2 = new BigDecimal(Double.toString(j));
		BigDecimal subtract = bigDecimal.subtract(bigDecimal2);//调用BigDecimal里面的减法运算
		//将BigDecimal类型转为Double类型
		return subtract.doubleValue();
	}
}

运行结果
java中类型转换、运算精度丢失问题_第2张图片

你可能感兴趣的:(java笔试)