对于浮点数计算,有时候结果正确,有时候结果又不正确,所以在浮点数运算时我们要学会避免出现差异性。
通过下面实例我们来看
double restult = 1.00 - 0.10;
System.out.println(result);
上面实例输出的是0.9,答案正确
double restult = 3.00 - 2.60;
System.out.println(result);
这时答案是0.3999999999999999
因此,为了保证答案的准确性,我们应该先将结果*某个数值。转化为long性进行计算,然后在/这个值转化为double性以保证答案准确性。
import java.util.Scanner;
public class Subtration {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double d1;
double d2;
int num = 1000;
d1 = sc.nextDouble();
d2 = sc.nextDouble();
long l1 = (long)(d1*num);
long l2 = (long)(d2*num);
System.out.println(d1 - d2);
System.out.println((l1-l2)/(num*1.0));
}
}