VB.NET 小数点以下 第2位 第3位の切り捨て 切り上げ

四捨五入を行うMathクラスのRound関数では、
小数点以下の桁数の指定ができましたが、
切り捨てを行うFloorメソッド、
切り上げを行うCeilingメソッドでは
小数点以下の桁数の指定ができません。

あらかじめ用意されている関数では実現できないため、
自分でコードを書きます。

小数点以下第2位での切り捨て、切り上げ

Sub Main()
    ' 小数点第2位での切り捨て
    Dim data As Double = 9.278
    data *= 10
    data = Math.Floor(data)
    data /= 10
    Console.WriteLine(data)

    ' 小数点第2位での切り上げ
    data = 9.218
    data *= 10
    data = Math.Ceiling(data)
    data /= 10
    Console.WriteLine(data)
End Sub
9.2
9.3

そのままの数値では、処理できないので、
いったん、10倍して小数点を右にひとつずらします。
そうすると、9.278から92.78になります。
ここでFloor関数を使えば、小数点以下を切り捨てますから92となります。
92を10で割り、小数点を左にひとつずらせば、9.2となり、
望み通りの結果が得られます。
切り上げのCeiling関数でも同じです。

小数点以下第3位での切り捨て、切り上げ

小数点以下第2位では、もとの数値を10倍しましたが、
それと同じように第3位では桁がひとつ変わっただけなので、
100倍するようにします。

Sub Main()
    ' 小数点第3位での切り捨て
    Dim data As Double = 9.278
    data *= 100
    data = Math.Floor(data)
    data /= 100
    Console.WriteLine(data)

    ' 小数点第3位での切り上げ
    data = 9.763
    data *= 100
    data = Math.Ceiling(data)
    data /= 100
    Console.WriteLine(data)

End Sub
9.27
9.77

これで小数点第2位以下の切り捨て、
切り上げ処理ができるようになりました。

四捨五入の解説記事はコチラ

タイトルとURLをコピーしました