Java double float与int相乘出错问题

xiaoxiao2021-02-28  96

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

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

转载请注明原文地址: https://www.6miu.com/read-42269.html

最新回复(0)