小数点以下を切り捨て
Math.Truncateメソッドは、引数に指定した数値以下の最大整数、つまり小数点以下の数値を切り捨てた整数値、つまり0に最も近い整数値を返します。
Math.Truncate(12.5) ' 12 Math.Truncate(-12.5) ' -12 Math.Truncate(5.123) ' 5 Math.Truncate(-5.123) ' -5 Math.Truncate(0) ' 0
Visual Basicでは、切り捨てと切り下げは同義ではありません。たとえば、マイナス数値-7.5の場合、次のようになります。
切り捨てMath.Truncate(-7.5)は、-7 、切り下げMath.Floor(-7.5)は -8、です。
Math.Floorメソッドは、引数に指定した数値以下の最大整数値を返します。
Math.Truncateメソッドの引数は、Double型または、Decimal型のいずれかにします。Double型を使うと誤差が出て、思わぬ結果になることがあります。誤差が出ると困るようなら、Decimal型を使います。
' 切り捨てによる税込価格を計算 Dim taxRate As Decimal = 0.08D ' Dを付けないとDouble型 Dim hontai As Decimal = 140 Dim zeikomi As Decimal = hontai * (1 + taxRate) Console.WriteLine(Math.Truncate(zeikomi)) ' 151
Math.Truncateメソッドでは、引数に指定した数値の整数値切り捨て機能しかありません。小数点以下や1の位以上を切り捨てる時は、少し工夫する必要があります。
' 小数第二位を切り捨て Dim suuti As Decimal = 1.35D ' Dを付けないとDouble型 ' 10倍してMath.Truncateで切り捨て、その後10で割る Dim kekka As Decimal = Math.Truncate(suuti * 10D) / 10D Console.WriteLine(kekka) ' 1.3
Math.Truncateメソッドのサンプルプログラム
Math.Truncateメソッドを使ったサンプルプログラムを作成します。
ソースリストの枠内をクリックすると全選択できます。
Module Module1 Sub Main() ' 変数の宣言 Dim inStr As String = "" Dim inNum As Decimal = 0 Dim anser As Decimal = 0 Do Console.WriteLine("endを入力すると終了します") ' キーボードから入力 Console.WriteLine("切り捨てる数値を入力してください") inStr = Console.ReadLine() If inStr = "end" Then ' endを入力したら、Exit Doで、Loopを抜ける Exit Do End If ' IsNumeric関数で入力数値チェック ' エラーがなければ数値に変換 If IsNumeric(inStr) = True Then ' Decimal型数値に変換 inNum = Decimal.Parse(inStr) ' Math.Truncateを使って切り捨て anser = Math.Truncate(inNum) ' 切り捨て結果の表示 Console.WriteLine() Console.WriteLine("切り捨て結果:" & anser) Console.WriteLine() End If Loop End Sub End Module