2016-09-23 13 views
0

私はより詳細なレベルでコンピューティングを学び、LinuxとCの両方を同時に学習し始めました。今まで滑らかなセーリング。初心者のCプログラムからの予期しない動作

私はLinux Mint 17をKernel 3.16.0-38-genericで、Code :: Blocks 13.12をIDEとして使用しています。

以下のペーストは、データ型、変数、およびprintf()を使用する私のプラクティスコードであり、vtで表示される関連する出力です。浮動小数点データ型5番目と最終的には4番目の小数点以下の値をスキップしているようです。

変数を呼び出すプロセスを酷使していますか?コードにバグがありませんか、これはCodeBlocksのバグですか?また、 - 私は私のコードスニペットが完全プレビューで一緒にマッシュされている理由はわからないので、貧しい可読性

コードのための私の謝罪は、コンパイルして実行する:コンパイルの

/* Prints a message on the screen */ 

#include <stdio.h> 
echar a1 = 'a'; 
int i1 = 1; 

float f1 = 0.123456; 

int main() 

{ 
    printf("Testing %c la%sof characters using variables \n", a1, "rge string "); 
    printf("This line has the values %d and %f.\n", i1, f1); 
    printf("%f can also be displayed as %.5f or %.4f or %.3f or %.2f or %.1f or %.0f \n", 
     f1, f1, f1, f1, f1, f1, f1); 
    printf("Which is an integer . . ."); 
    return 0; 
} 

出力と実行しますコード

Testing a large string of characters using variables 
This line has the values 1 and 0.123456. 
0.123456 can also be displayed as 0.12346 or 0.1235 or 0.123 or 0.12 or 0.1 or 0 
Which is an integer . . . 
Process returned 0 (0x0) execution time : 0.002 s 
Press ENTER to continue.

ご協力いただきありがとうございます。私はCプログラミングAbsolute Beginnerから勉強しています - Greg Perry著

+6

最後の桁が丸められています。前の桁は切り捨てられません。 –

+1

0.314159などの異なる番号を使用してください。動作がより明確になります。 –

答えて

3

最後の桁は丸められています。あなたがこれを持っていた場合

float f1 = 0.777777; 

出力は次のようになります。同様に

This line has the values 1 and 0.777777. 
0.777777 can also be displayed as 0.77778 or 0.7778 or 0.778 or 0.78 or 0.8 or 1 

、あなたがこの持っていた場合:

float f1 = 0.999888; 

あなたがこれを取得したい:

This line has the values 1 and 0.999888. 
0.999888 can also be displayed as 0.99989 or 0.9999 or 1.000 or 1.00 or 1.0 or 1 
+0

お返事ありがとうございました。これは明らかなようですが、私の学習教材では、プレース値を落としたときにCが浮動小数点値を丸めるとは言及していませんでした。 – user29448

+0

@ user29448うれしいことに助けてくれました。あなたが役に立つと思ったら、[この回答を受け入れる](http://stackoverflow.com/help/accepted-answer)を自由に感じてください。 – dbush

関連する問題