Math.FloorとMath.Truncateの違い - C#

Math.FloorとMath.Truncateの違いを紹介します。

概要

Math.Floor と Math.Truncate は似たような結果を得られ、違いが分かりにくいです。 この記事では、FloorとTuncate の違いを紹介し、あわせて、Math.Ceiling, Math.Round の結果との比較も紹介します。

それぞれの処理の動作

Math.Truncate

与えた数値の整数部を返します。
動作の詳細はこちらの記事も参照してください。

Math.Floor

与えた値の以下の数のうち、最大の整数値を返します。
動作の詳細はこちらの記事も参照してください。

Math.Ceiling

与えた値の以上の数のうち、最小の整数値を返します。
動作の詳細はこちらの記事も参照してください。

Math.Round

与えた値に最も近い整数に値を丸めた値を返します。(小数点以下の桁数を指定しない場合)
小数の場合は小数第一位を四捨五入した値になります。
動作の詳細はこちらの記事も参照してください。

比較結果

入力値が正の場合

入力値が正の値の場合のそれぞれのメソッドの結果は下の表のとおりです。
Math.Ceiling は入力された値以上の最小の整数値を返すため、小数の値の場合は、桁を切り上げた値の整数となります。
Math.Roundは四捨五入の値を返すため、小数点第一位が5以上の場合は、桁を切り上げ、5未満の場合は切り捨てた値になります。
Math.Truncateと Math.Floor はどちらも同じ結果となり、小数を切り捨てえた値になります。

入力値 Math.Truncate Math.Floor Math.Ceiling Math.Round
4 4 4 4 4
3.2 3 3 4 3
3.6 3 3 4 4
0.25 0 0 1 0

入力値が負の場合

入力値が負の値の場合のそれぞれのメソッドの結果は下の表のとおりです。
Math.Ceiling は入力された値以上の最小の整数値を返すため、小数の値の場合は、桁を切り捨てた値の負の整数となります。
Math.Roundは四捨五入の値を返すため、小数点第一位が5以上の場合は、桁を切り上げより大きい負の整数とします。5未満の場合は切り捨てるため、小さい負の整数になります。
Math.Truncateは小数部分を切り捨てた負の値になります。Math.Floor は指定した数以下の数のうち、最大の整数値を返すため、小数の値の場合は桁を切り上げた値の負の整数値になります。

入力値 Math.Truncate Math.Floor Math.Ceiling Math.Round
-4 -4 -4 -4 -4
-3.2 -3 -4 -3 -3
-3.6 -3 -4 -3 -4
-0.25 0 0 1 0
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2022-02-21
iPentec all rights reserverd.