Math.Floorメソッド [VB 2010]

Visual Basic 2010/2008 超やさしい文法

   Math.Floorメソッド

Math.Floorメソッドは、引数に指定した数値以下の最大整数、つまり小数点以下の数値を切り下げた整数値を返します。

数値の切り下げ

Math.Floorメソッドの引数は、Double型または、Decimal型のいずれかにします。

Double型を使うと誤差が出ることがあります。誤差が出ると困るようなら、Decimal型を使ってください。

  ' 切り下げによって税込価格を計算
  Dim taxRate As Decimal = 0.05D  ' Dを付けないとDouble型になる
  Dim hontai As Decimal = 150
  Dim zeikomi As Decimal = hontai * (1 + taxRate)
  Console.WriteLine(Math.Floor(zeikomi))           ' 157

Math.Floorメソッドでは、引数に指定した数値の整数値切り下げ機能しかありません。小数点以下や1の位以上を切り下げる時は、少し工夫します。

  ' 小数第二位を切り下げ
  Dim suuti As Decimal = 1.35D  ' Dを付けないとDouble型になる
  ' 10倍してMath.Floorで切り下げ、その後10で割る
  Dim kekka As Decimal = Math.Floor(suuti * 10D) / 10D
  Console.WriteLine(kekka)       ' 1.3

切り捨てと切り下げは同義ではありません。たとえば、マイナス数値-7.5の場合、次のようになります。

  • 切り下げ:Math.Floor(-7.5)は、-8
  • 切り捨て:Math.Truncate(-7.5)は、-7

数値切り捨てメソッド Math.Truncate はこちらからどうぞ

Math.Floorメソッドを使ったサンプルプログラムです。戻り値も引数と同じ数値型に揃えます。

Module Module1
 
    Sub Main()
        ' 変数の宣言
        Dim inStr As String
        Dim inNum As Decimal
        Dim anser As Decimal
        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.Floorを使って切り下げ
                anser = Math.Floor(inNum)
                ' 切り下げ結果の表示
                Console.WriteLine()
                Console.WriteLine("切り下げ結果:" & anser)
                Console.WriteLine()
            End If
        Loop
    End Sub

End Module

Copyright© やさしいVB2010/2008 ADO.NET. All rights reserved.