2012-01-11 9 views
1

Тheseは私の計算され奇妙な行動float値を印刷

float c = 5.0 * (12.0 - 32.0)/9.0; 
printf("%f.2", c); 

結果がある-11.111111.2が、私は-11.11であることを期待していました。なにが問題ですか ?

+0

:%.2fは結果を切り捨てています。9.9999は9.99として表示されます。 –

答えて

5

フォーマット指定子は"%.2f"である必要があります。

あなたの現在の状況では、.2の位置が間違っています。このため、予想よりも多くの数字が表示され、なぜ出力の末尾に.2がそのまま表示されるのですか。

2
printf("%f.2", c); 

printf("%.2f", c); 

更新コードに変更する必要があり、次のとおりです。

$ cat f.c 
#include <stdio.h> 

int main() 
{ 
    float c = 5.0 * (12.0 - 32.0)/9.0; 
    printf("%.2f \n", c); 

    return 0; 
} 
$ gcc f.c 
$ ./a.out 
-11.11 
$ 
0

あなたはフロートのフォーマットの仕様を変更する必要があります。それは間違って 代わりの

printf("%f.2", c); 

を使用しているとしてこれを使用してみてください:

float c = 5.0 * (12.0 - 32.0)/9.0; 
printf("%1.2f", c); 

これは動作するはずです! :)