看下面的一段代码的运行:
public class double_int {
public static void main(String[] args) {
double d = 0.06;
float f = (float) d;
int n = 750;
int ref = (int) (n * (1 + f));
System.out.println(ref);
}
}
输出结果很意外的不是 795而是794
public class double_int {
public static void main(String[] args) {
double d = 0.16;
float f = (float) d;
int n = 750;
int ref = (int) (n * (1 + d));
System.out.println(ref);
}
}
输出结果很意外的不是870而是869
解决方法
import java.math.BigDecimal;
public class double_int_float {
public static void main(String[] args) {
double d = 0.06;
float f = (float) d;
int n = 750;
BigDecimal a1 = new BigDecimal(Double.toString((d + 1)));
BigDecimal b1 = new BigDecimal(Double.toString(n));
int result = a1.multiply(b1).intValue();// 相乘结果
System.out.println(result);
}
}