私は次のコードをMacで試しましたが、出力は私には奇妙なものです。値と変数の間のC++の異なる印刷動作
float a = 2.225;
float b = 123.235;
printf("round: %.2f %.2f \n", a, b);
printf("round: %.2f %.2f \n", 2.225, 123.235);
出力:
round: 2.22 123.24
round: 2.23 123.23
グラム++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
印刷で丸めルールは何ですか?どのように私はこれらの2つの状況で同じ印刷結果を得ることができますか? 多くのありがとうございます。
私は違いが 'float'と' double'sの間にあると思います。 –
Read http://floating-point-gui.de/ –
問題は印刷ではありません。異なる入力を渡すので、異なる出力が得られます。最初のケースでは、 'double'値を' float'変数に代入すると精度が失われます。 –