2011-01-02 20 views
2

私が探しているものがまったく見つかりませんでした。小数点以下を切り捨てます

すべての番号を整数に丸めたいと思います。

例:私はint型に入れた場合
5.9 6
5.5は6
5.1は6
5.000001122が6
5.0になるだろうだろうだろうが、5

だろう私が考えていましたそれは小数点を取り除くだろうが、少数小数点がちょうど落ちていくように見えなかった。私はここで正しいですか?

最終的な結果に1を加えて問題の約99%を修正すると考えましたが、結果が5の場合は1を追加したくありません。

この問題を解決するにはどうすればよいですか?

答えて

11

ceil()の機能を<math.h>またはstd::ceil()から<cmath>に変更してください。

+1

ではなくにC++スティックを使用していて、std :: ceil()を使用している場合。古いCヘッダーは廃止予定とみなされます[depr.c.headers]。 – joke

0

使用のmath.h関数はceil(番号)

8

[...]それは右の小数だけで脱落たようには見えませんでした。私はここで正しいですか?

修正、intにキャストは、単に(すなわちゼロ向かっ丸め)小数部分を破棄する。

cmathのstd::ceil()は質問のすべての例で機能しますが、質問にはの負の値の必要な動作が指定されていません。例えば、-5.9を-6.0または-5.0に丸める必要がありますか? ceil(-5.9)= 5.0、これはあなたが望むものではないかもしれません。あなたは-6.0をしたい場合は、床(-5.9)が必要になり、そのコードがなければならないであろう。

round = f > 0 ? std::ceil(f) : std::floor(f) ; 

質問は(あなたが切り上げとしてアップを丸めているかどうかである)し、あるいはむしろ丸め上記のコードではゼロから離れて(値が上がります)

関連する問題