不明白为什么我的乘法不起作用?

时间:2017-12-09 17:11:50

标签: c

我正在尝试为类赋值创建一个温度转换函数,并且我的函数正确地接收了所有参数但是由于某种原因在它碰到等式后转换数字它只是使数字为0.

这是代码,所以你知道我在说什么:

void convertToCelsius(int farenheitTemperature, int temperatureType){

if (temperatureType == 1)
{

farenheitTemperature = ((5/9) * (farenheitTemperature - 32));
printf("Your temperature in Celsius is %i\n", farenheitTemperature);

}

else
{
    printf("Your temperature is already in celsius!\n");
}
}

main函数正确地放入了参数,所以我认为这不是问题。

非常感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:3)

请检查运营商优先级和&关联性,下面的陈述中有一个问题

farenheitTemperature = ((5/9) * (farenheitTemperature - 32)); 

(5/9)收益率为0而不是some decimal fractional digit,因为系数为0。

如果您更正结果typecast或替换为

farenheitTemperature = ((5 * (farenheitTemperature - 32)/9);

我希望它有所帮助。

答案 1 :(得分:2)

使用double而不是int作为温度参数。

void convertToCelsius(double farenheitTemperature, int temperatureType)
{
    if (temperatureType == 1)
    {
        farenheitTemperature = ((5.0/9.0) * (farenheitTemperature - 32.0));
        printf("Your temperature in Celsius is %f\n", farenheitTemperature);
    }
    else
    {
        printf("Your temperature is already in celsius!\n");
    }
}

答案 2 :(得分:-1)

不知道你为什么这样写(最好在左侧使用不同的变量名称来表示摄氏温度。“代码可读性很重要”)但你写错了,< / p>

farenheitTemperature = ((5/9) * (farenheitTemperature - 32));

在C中,(5/9)的计算结果为0,这使整个表达式为0.您应该double/float使用fahrenheitTemperature并将(5/9)更改为(5/9.0)(5.0/9)