時々、私はいくつかの数値を丸めることに気づき、常に結果を整数にキャストする必要があります:
_int rounded = (int) floor(value);
_
すべての丸め関数(ceil()
、floor()
)が整数ではなく浮動小数点数を返すのはなぜですか?私はこれはかなり直感的でないと思います、そしていくつかの説明が欲しいです!
これらの関数によって返される整数値は、整数型(int、longなど)に格納するには大きすぎる場合があります。未定義の結果を生成するオーバーフローを回避するために、アプリケーションは戻り値を整数型に割り当てる前に、戻り値の範囲チェックを実行する必要があります。
ceil(3)Linux manページから。
これは、float
の範囲がint
の範囲よりも広いためです。これらの関数から返された値がint
に収まらなかった場合、何を期待できますか?これは未定義の動作であり、プログラムで確認することはできません。