C# Math.Truncate и Math.Floor


#1

Зачем нужны два этих метода, ведь они делают одно и тоже? Я проверял их работу на нескольких значениях (3.5, 4.7, 11.2 ...) и всегда получал один и тот же результат.


#2

Вам также нужно было проверить их работу на отрицательных числах, тогда бы увидели отличие в их работе. Также нужно упомянуть ещё о нескольких методах округления чисел, это Math.Ceiling и Math.Round.
Эти методы округляют по разному:

  • Math.Floor - всегда округляет до отрицательной бесконечности (к меньшему)
  • Math.Ceiling - всегда округляет до положительной бесконечности (к большему)
  • Math.Truncate - для положительных чисел он работает как Math.Floor, а для отрицательны - как Math.Ceiling (соответственно он всегда округляет в сторону 0).
  • Math.Round - округляет до ближайшего целого (неважно положительное ли это число или отрицательное). Если число находится точно на полпути между двумя целыми числами (например, 2.5), то оно округляется до четного (до 2).

несколько результатов округления одного и того же числа используя разные методы:

                        a=-2.6  b=-0.5  c=0.2  d=1.5  e=2.7
Floor                    -3      -1      0      1      2
Ceiling                  -2       0      1      2      3
Truncate                 -2       0      0      1      2
Round                    -3       0      0      2      3