c++ - 我的温度转换有什么问题?

标签 c++ temperature unit-conversion

在这个程序中,我尝试采用 78 华氏度,并将它们返回到具有摄氏度版本和开尔文的类中。但是出于某种奇怪的原因,我只是将其作为输出。我做错了什么?

这是我的输出。

78
0
273.15
#include <iostream>
using namespace std;


class Temperature
{
public:

    double getTempKelvin();
    double getTempFahrenheit();
    double getTempCelcius();

    void setTempKelvin(double k);
    void setTempFahrenheit(double f);
    void setTempCelcius(double c);

private:
    double kelvin, fahrenheit, celcius;
    double c, f, k;
};

int main ()
{
    double c, f, k;
    Temperature Conv;

    Conv.setTempFahrenheit(f);
    Conv.setTempCelcius(c);
    Conv.setTempKelvin(k);
    cout << Conv.getTempFahrenheit() << endl;
    cout << Conv.getTempCelcius() << endl;
    cout << Conv.getTempKelvin() << endl;



    return 0;
}

void Temperature::setTempFahrenheit(double f)
{
    f = 78;
    fahrenheit = f;
}

void Temperature::setTempCelcius(double c)
{
    c = (5/9) * ( f - 32);
    celcius = c;
}

void Temperature::setTempKelvin(double k)
{
    k = c + 273.15;
    kelvin = k;
}




double Temperature::getTempFahrenheit()
{
    return fahrenheit;
}

double Temperature::getTempCelcius()
{
    return celcius;
}


double Temperature::getTempKelvin()
{
    return kelvin;
}

最佳答案

5/9 是整数除法,结果为 0。你需要使用 double ,试试:

void Temperature::setTempCelcius(double c)
{
    c = (5.0/9.0) * ( f - 32);
    celcius = c;
}

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

相关文章:

c# - 获取主板传感器数据

javascript - Google Docs 像素到英寸

c++ - 找不到Boost库| C++

c++ - 在非托管 C/C++ 中获取已签名 EXE 的 X509 代码签名证书序列号

c++ - 这个用于计算指数的递归代码的运行时间是多少?

c++ - 右侧资源管理器上下文菜单(IID_IContextMenu?)

C 温度转换程序保持输出 0 华氏度到摄氏度

c# - 单位转换器 C#

java - 单位转换器...不断返回 0