gpt4 book ai didi

java - 仅在需要时显示 double 的小数(舍入问题)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:49 26 4
gpt4 key购买 nike

我正在尝试根据可变输入获得所需的输出。我可以接近我想要的结果,但四舍五入似乎有问题。

我想要的示例(输入 > 输出)。

30 > 30
30.0 > 30
30.5 > 30,5
30.5555 > 30,6
30.04 > 30

问题是最后一个返回为 30.0。现在我明白了为什么会这样(因为向上/向下舍入)

我的代码:

private String getDistanceString(double distance) {
distance = 30.55;
DecimalFormat df = new DecimalFormat(".#");
if (distance == Math.floor(distance)) {
//If value after the decimal point is 0 change the formatting
df = new DecimalFormat("#");
}
return (df.format(distance) + " km").replace(".", ",");
}

最佳答案

使用== 几乎总是错误的与 float 。你应该使用 Math.abs(a - b) < x .

private String getDistanceString(double distance) {
DecimalFormat df = new DecimalFormat(".#");
if (Math.abs(distance - Math.round(distance)) < 0.1d) {
//If value after the decimal point is 0 change the formatting
df = new DecimalFormat("#");
}
return (df.format(distance) + " km").replace(".", ",");
}

public void test() {
double[] test = {30d, 30.0d, 30.5d, 30.5555d, 30.04d, 1d / 3d};
for (double d : test) {
System.out.println("getDistanceString(" + d + ") = " + getDistanceString(d));
}
}

关于java - 仅在需要时显示 double 的小数(舍入问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34264077/

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