gpt4 book ai didi

java - 为什么Java在float计算后显示额外的值?

转载 作者:行者123 更新时间:2023-12-01 16:38:19 25 4
gpt4 key购买 nike

我有一段非常简单的代码,我认为从用户的角度来看,它给出了错误的结果。

package com.test.sample;
public class Test {

public static void main(String[] args) {
float c,d;

c = (float) 12.47;
d = (float) 12.44;
d = c - d;

System.out.println("Hello the calculated value of a=" + d);
}

}

输出是你好,a=0.030000687的计算值

但我想要 a=0.030000000 这是完美的值。

最佳答案

Floating point arithmetic ,开发人员应该了解的内容。

JVM 实现 IEEE-754 1985 floating point standard它有它的 accuracy problem (因为 float 不能精确地表示所有实数)。

如果您追求准确性,请使用 java.math.BigDecimal 对象。

<小时/>

更新:这就是我如何采用您的示例并使用 BigDecimal 来实现您的预期结果:

import java.math.BigDecimal;

/**
* @author The Elite Gentleman
*
*/
public class BigDecimalTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal a = new BigDecimal(Float.toString(12.47f));
BigDecimal b = new BigDecimal(Float.toString(12.44f));
BigDecimal c = a.subtract(b);
System.out.println(c);
}
}

关于java - 为什么Java在float计算后显示额外的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952368/

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