在java语言中无法精确计算浮点数,例如:
float a1,a2;
System.out.println("请输入两个浮点数:");
Scanner sc=new Scanner(System.in);
a1=sc.nextFloat();
a2=sc.nextFloat();
System.out.println("这两个浮点数的和是:");
System.out.println(a1+a2);
sc.close();
这串代码输入0.01和0.05
输出结果是一个近似于0.06的值,并不是0.06
要想解决,可以用以下的方法:
1.自己的思路:利用以前提到过的高精度数的计算方式,可以实现。不过缺点很明显,只能够计算小数点后位数不多的情况,不过应对目前所学应该够用
2.利用java中自带的类BigDecimal:
实现代码如下:
BigDecimal num1=new BigDecimal("0.01");
BigDecimal num2=new BigDecimal("0.05");
//由于BigDecimal是个类,所以不能直接用算术运算符+,不过能用类中自带的成员函数
System.out.println(num1.add(num2));
这样就能够避免浮点数运算时的精度丢失问题。