##疑問なこと
cpp
1#include <iostream> 2#include <iomanip> 3 4using namespace std; 5 6int main() 7{ 8 9 double B = 9.79; 10 double C = B + 0.005; 11 12 13 cout << std::fixed << std::setprecision(15) << B << endl; 14 cout << std::fixed << std::setprecision(15) << C << endl; 15 16 17 return 0; 18}
このコードの実行時、出力が
9.789999999999999 9.795000000000000
このように加算を行った時、小数第4位以降のどこかで四捨五入が行われてしまいます。
Cの値が9.79499999999999
となるようにするにはどのように変更を加えればよろしいでしょうか。
ご教授いただけると幸いです。
##環境
clang++:Apple clang version 11.0.3 (clang-1103.0.32.29)
jajajaさんが、なぜそのような結果を希望しているのかがわかりません(特定の目的があるなら、それを示していただければと思います)。
「9.79」を変数に入れたときの「9.789999999999999」は期待通りだけど、足し算をした後の「9.795000000000000」になるのはよくないというのが、一貫性がないように感じます。
`9.789999999999999`に`0.005`を足すと`9.79499999999999`と理論上はなるのに、`9.795000000000000`と出力されてしまうことから、私は四捨五入されたと考えました。(ikadzuchiさんの回答から四捨五入されたわけではないと学びました)
どのような時に四捨五入されるか気になったので、`9.79499999999999`と意図的に出力する方法について質問しました。
質問の仕方が悪く申し訳ありません。
回答5件
あなたの回答
tips
プレビュー