PG日誌

各記事はブラウザの横幅を1410px以上にすると2カラムの見出しが表示されます。なるべく横に広げてみてください。

【C#】小数点の切り捨て・切り上げ・丸め・四捨五入まとめ

小数点に関係する処理で使用するメソッドは以下の4つ + キャストです。

各々動きを簡単に表にすると以下の通りになります。

メソッド 説明 挙動(1) 挙動(2)
Truncate 小数点を切り捨て 1.5 → 1 -1.5 → -1
Floor 負数の場合より小さい方向に丸める 1.5 → 1 -1.5 → -2
Ceiling 正の方向に丸める 1.5 → 2 -1.5 → -1
Round 四捨五入 1.5 → 2 -1.5 → -2
(int) int にキャスト、Truncate と同じ 1.5 → 1 -1.5 → -1

小数点N桁目に対する操作

Round メソッド以外は桁指定ができないので以下のような定型文を書く必要があります。

double d1 = 1.23456789;
double d2 = Math.Truncate(d * 1000) / 1000;
// d2 = 1.234

以下のような定型処理に汎用処理化しておいた方が便利に使えます。

public static void Foo()
{
    double d = 1.234567;
    double d2 = Truncate(d, 2); // 小数点2桁までで打ち切り
}

public static double Truncate(double value, int d)
{
    int factor = 1;
    for (int i = 0; i < d; i++)
    {
        factor *= 10;
    }
    return Math.Truncate(value * factor) / factor;
}