小数点以下切上げ関数 [VB]

VB2012-2017

小数点以下切上げ整数を求める

Math.Ceilingメソッドを使うと、引数に指定した数値以上の最小整数、つまり小数点以下の数値を切り上げた整数値を返します。

誤差に注意

Math.Ceilingメソッドの引数は、Double型または、Decimal型のいずれかの数値型を指定します。Double型を使うと誤差が出て、思わぬ結果になることがあります。誤差が出て困るようなら、Decimal型を使います。

  ' 切り上げにより税込価格を計算
  Dim zeiritsu As Decimal = 0.05D  ' Dを付けないとDouble型になる
  Dim hontai As Decimal = 150
  Dim zeikomi As Decimal = hontai * (1 + zeiritsu)
  Console.WriteLine(Math.Ceiling(zeikomi))          ' 158

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

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

Math.Ceilingメソッドを使ったサンプルプログラムです。戻り値も引数と同じ数値型に揃えます。プログラムが完成したら、テストしてみてください。

ソースリストの枠内をクリックすると全選択できます。

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.Ceilingを使って数値の切上げ
              anser = Math.Ceiling(inNum)
              ' 結果の表示
              Console.WriteLine()
              Console.WriteLine("結果:" & anser)
              Console.WriteLine()
          End If
      Loop
  End Sub

End Module