Java double float与int相乘出错问题

来源:互联网 发布:蜂窝移动数据怎么清零 编辑:程序博客网 时间:2024/05/21 07:54

看下面的一段代码的运行:

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);}}