【问题标题】:Java Why is this giving me "0"? [duplicate]Java 为什么这给了我“0”? [复制]
【发布时间】:2015-01-21 19:30:33
【问题描述】:

所以这是我正在使用的代码的一部分,由于错误的答案,我们只应该从修复一些逻辑错误开始。我还发现了一些语法错误,这些错误不会让编译器完成......我不断得到 fToC 的“0”......

//declaration statements
final int BOILING_IN_F = 212;
int fToC;
string output;

//there is other code between that has nothing
//to do with outputting the boiling point.

fToC = (5/9) * (BOILING_IN_F - 32);
output = BOILING_IN_F + " in Fahrenheit is " + fToC
             + " in Celsius.";
System.out.println(output); //this is outputting 0 for fToC
System.out.println();

答案很有用,除了我需要在编译和运行程序之前将 fToC 声明为 double。谢谢。

【问题讨论】:

  • 谢谢,我想是这样的。我在尝试更改公式时混合了上学期学到的一些 Python。感谢您的帮助,我对自己没有看到这一点感到非常沮丧。但生活还要继续。
  • 我还意识到我需要将 fToC 声明为 double。在阅读了我的文本之后,我注意到 Java 不允许将可能是 double 的内容分配给 int,因为可能会丢失数据。

标签: java class math printing output


【解决方案1】:

您正在用5/9 执行Java 的整数除法,它必须产生另一个整数——0,所以结果是0。使用 double 文字来强制浮点数学运算。

fToC = (5.0/9.0) * (BOILING_IN_F - 32);

您需要将fToC 改为double(并将拼写错误string output 改为String output)。

【讨论】:

  • 把int fToC改成double fToC不是更好吗?
  • @AngeloAlvisi 正确;已更新。
【解决方案2】:

(5/9) 是 0 由于 int 除法。试试(5.0/9)

完整的表达式应该是:

fToC = (5.0/9) * (BOILING_IN_F - 32);

【讨论】:

    【解决方案3】:

    (5/9) 你正在对两个整数进行运算,所以它被截断,所以它等于 0。你正在将那个 0 与另一个数字相乘。

    改用(5.0f/9.0f) 来准确说明您的数字实际上是十进制数字。

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      相关资源
      最近更新 更多