Перейдите по этим ссылкам для описания MSDN:
Math.Floor
, которая округляется до отрицательной бесконечности.
Math.Ceiling
, что округляет в сторону увеличения до бесконечности.
Math.Truncate
, округление вверх или вниз до нуля.
Math.Round
, который округляется до ближайшего целого числа или указанного числа десятичных знаков. Вы можете указать поведение, если оно точно равноудалено между двумя вариантами, такими как округление, чтобы конечная цифра была четной («Round(2.5,MidpointRounding.ToEven)
» становится 2) или чтобы она была дальше от нуля («Round(2.5,MidpointRounding.AwayFromZero)
» становится 3).
Может помочь следующая диаграмма и таблица:
-3 -2 -1 0 1 2 3
+--|------+---------+----|----+--|------+----|----+-------|-+
a b c d e
a=-2.7 b=-0.5 c=0.3 d=1.5 e=2.8
====== ====== ===== ===== =====
Floor -3 -1 0 1 2
Ceiling -2 0 1 2 3
Truncate -2 0 0 1 2
Round (ToEven) -3 0 0 2 3
Round (AwayFromZero) -3 -1 0 2 3
Обратите внимание, что Round
намного мощнее, чем кажется, просто потому, что он может округляться до определенного количества десятичных знаков. Все остальные всегда округляются до нуля. Например:
n = 3.145;
a = System.Math.Round (n, 2, MidpointRounding.ToEven); // 3.14
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15
С другими функциями вы должны использовать умножение / деление для достижения того же эффекта:
c = System.Math.Truncate (n * 100) / 100; // 3.14
d = System.Math.Ceiling (n * 100) / 100; // 3.15