从简单的浮点计算得到错误的输出

时间:2012-12-14 22:02:04

标签: c floating-point floating-point-conversion

  

可能重复:
  C++: What is the printf() format spec for “float”?

我对编程非常陌生,只是一个初学者级别(仍然非常新手且容易出错:)

我的问题如下。我正在用C编写一个程序,将27华氏度转换为摄氏度。

代码如下:


int main (void)

{
    float F = 27;
    float C = (F - 32) / 1.8;

    printf ("27 degrees Fahrenheit is %i degrees Celsius ", C);

    return 0;    
}

获得以下输出:

27 degrees Fahrenheit is -2147483648 degrees Celsius

我没想到结果那么冷。我的计算器应该是-2.77。可能有什么问题?由于这样的计算,世界可能会冻结! ))

我想这是我要问的基本原理,但听起来很有意思。感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

printf ("27 degrees Fahrenheit is %f degrees Celsius ", C);

%iint的格式说明符。要传递doublefloat,您需要%f

答案 1 :(得分:0)

printf()中,您指定C指向的内存应该被解释为它是一个int(32位或64位,具体取决于您的系统和编译器)。但存储在该内存位置的实际值为float

因此printf()会混淆并输出用于int

的内存中位的float