gpt4 book ai didi

java - 我的温度转换代码有什么问题?

转载 作者:行者123 更新时间:2023-11-29 09:44:39 26 4
gpt4 key购买 nike

我正在编写一个可以做很多事情的程序,但其中一项是将摄氏度转换为华氏度。在我这样做之后,我决定允许相反的结果,这就是我所做的。当我将摄氏度转换为华氏度时,我得到了正确的答案,但由于某种原因,我在将华氏度转换为摄氏度时得到的答案略有偏差。这是我的代码:

String celcius = jTextArea3.getText();
String fahren = jTextArea7.getText();
if (fahren.equals("")) {
double tempFahr;
double Input = Double.parseDouble(jTextArea3.getText());

tempFahr = Input * 9 / 5 + 32;
jTextArea7.setText(tempFahr + "");
}
else
{
double tempCelc;
double Input = Double.parseDouble(jTextArea7.getText());

tempCelc = (Input -32) * 5 / 9;
jTextArea3.setText(tempCelc + "");
}

这是简单的代码,但我想知道它是否可能是我没有看到的非常小的代码。我想这可能是我的公式,但我很确定不是,我已经调查过了。谁能帮忙?

我得到的错误答案的一个例子是:1 摄氏度 = 33.8 华氏度33.8 华氏度 = 0.9999999999999984 摄氏度

最佳答案

因为 Java 使用 float 的 IEEE 二进制表示,所以浮点计算几乎从不“精确”。问题是 33.8 不能准确表示,它在内部是 33.799999999999996 之类的。当您将其转换回摄氏度时,您会得到一个略小于 1 的数字。

与往常一样,相关引用是 What Every Computer Scientist Should Know About Floating-Point Arithmetic .

关于java - 我的温度转换代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967293/

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