除法运算符歧义
Divison operator ambiguity
Iclass Solution
{
public double cToF(int C)
{
//Your code here
double fh;
fh = (C*(double)(9/5))+32; //C=32 F=64
return fh;
}
}
IIclass Solution
{
public double cToF(int C)
{
//Your code here
double fh;
fh = (C*1.8)+32; //C=32 F=89
return fh;
}
}
请看一下上面的代码。此代码主要将温度从摄氏度转换为华氏度。在代码 I 中,当我在公式中使用 (9/5) 时,我得到的答案是 64。但是在代码 II 中,当我使用 1.8(9/5=1.8) 时,我得到的答案是 89(正确的)。谁能解释一下这背后的逻辑?
实际上,当您除以 9/5
时,它将 9
和 5
作为一个整数,然后将整个答案评估为仅 integer
。因此,9/5
(实际上是 1.8)然后从 1.8
类型转换为 1
。小数点后的部分被截断。因此,在您的第一个代码中,它将所有内容与 1
相乘,因此输出错误。
现在您会问,我已经将类型转换为 double
那为什么?
嗯,答案是首先计算 9/5
等于 1
(根据计算机的 int 除法)。然后它将种姓 1
键入 double
,即 1.0
。因此,您可以改用 9.0/5.0
。这也会给你正确的答案。
Iclass Solution
{
public double cToF(int C)
{
//Your code here
double fh;
fh = (C*(double)(9/5))+32; //C=32 F=64
return fh;
}
}
IIclass Solution
{
public double cToF(int C)
{
//Your code here
double fh;
fh = (C*1.8)+32; //C=32 F=89
return fh;
}
}
请看一下上面的代码。此代码主要将温度从摄氏度转换为华氏度。在代码 I 中,当我在公式中使用 (9/5) 时,我得到的答案是 64。但是在代码 II 中,当我使用 1.8(9/5=1.8) 时,我得到的答案是 89(正确的)。谁能解释一下这背后的逻辑?
实际上,当您除以 9/5
时,它将 9
和 5
作为一个整数,然后将整个答案评估为仅 integer
。因此,9/5
(实际上是 1.8)然后从 1.8
类型转换为 1
。小数点后的部分被截断。因此,在您的第一个代码中,它将所有内容与 1
相乘,因此输出错误。
现在您会问,我已经将类型转换为 double
那为什么?
嗯,答案是首先计算 9/5
等于 1
(根据计算机的 int 除法)。然后它将种姓 1
键入 double
,即 1.0
。因此,您可以改用 9.0/5.0
。这也会给你正确的答案。