gpt4 book ai didi

java - JAVA中的 double

转载 作者:行者123 更新时间:2023-11-29 06:07:07 25 4
gpt4 key购买 nike

我必须将我的结果四舍五入到最接近的 fo 0.05 即(6.34 到 6.35 和 6.37 到 6.4) 所以我创建了 myRound 函数。 当我编写测试以查看函数时,它失败了。

double rate=14.99;
double percentage=10;
double roundedCost=(rate*percentage)/100; //round off to the nearest value.
double finalRate = rate+myRound(roundedCost,2);

if(finalRate==16.49)
System.out.println("Its proper");
else
System.out.println("Wrong");

原因是double的精度值。 如何修正精度。

public double myRound(double value,int roundRange)
{
double hundredMultiple=(float) Math.pow(10, roundRange);
int rangeValue= (int) (value*hundredMultiple);
int tempValue= rangeValue%10;
if(tempValue<5)
tempValue=5-tempValue;
else
tempValue=10-tempValue;
rangeValue=rangeValue+tempValue;

return rangeValue/hundredMultiple;

}

最佳答案

问题是您正在尝试执行对十进制数字 感兴趣的操作。这不太适合二进制 浮点类型。您应该使用 BigDecimal,这是一种基于十进制的表示形式。

就像为什么你当前的方案不起作用的想法,如果你写:

double d = 0.1;

d 的值实际上 不是 0.1 - 它是最接近 0.1 的 64 位 IEEE 754 二进制浮点值。它的值将非常接近到 0.1,但不会是 0.1。

关于java - JAVA中的 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182994/

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