gpt4 book ai didi

java - int 问题的双倍乘法

转载 作者:行者123 更新时间:2023-12-02 03:05:31 27 4
gpt4 key购买 nike

double temp = 64.1;
System.out.println("Result = " + (temp*1000));

结果将是:

Result = 64099.99999999999

但实际结果应该是64100

如果是 Double 数据类型

double a = ((temp * 1000) % (0.5 * 1000));
a=7.275957614183426E-12;

如果将其强制转换为 float

((((float) temp) * 1000) % (0.5 * 1000));
a=0.0;

为什么会出现这种行为?

最佳答案

这是一个典型的 float 数字问题,当您乘以例如双*整数。

第一个选项使用 Math.round:

Math.round((temp*1000))

第二个选项使用 BigDecimal 类:

 BigDecimal temp = BigDecimal.valueOf(64.1);
BigDecimal thousand = BigDecimal.valueOf(1000);
BigDecimal result = temp.multiply(thousand);

//example how to extract int or double value
int intResult = result.intValue();
double doubleResult = result.doubleValue();
System.out.println("Result = " + result);

关于java - int 问题的双倍乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41800565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com