小数点に関係する処理で使用するメソッドは以下の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; }