Яка різниця між Math.Floor()і Math.Truncate().NET?
Яка різниця між Math.Floor()і Math.Truncate().NET?
Відповіді:
Math.Floorокругляє вниз, Math.Ceilingокругляє вгору і Math.Truncateокругляє до нуля. Таким чином, Math.Truncateце як Math.Floorдля додатних чисел, так і Math.Ceilingдля негативних чисел. Ось посилання .
Для повноти Math.Roundокругляйте до найближчого цілого числа. Якщо число знаходиться в середині між двома цілими числами, то воно округляється до парного. Довідково.
Дивіться також: Відповідь Пакса Діабло . Настійно рекомендується!
(int)myDoubleвідрізняється від (int)Math.Truncate(myDouble)?
Перейдіть за цими посиланнями для описів 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
evenяк властивість кінцевої цифри в округляється цифра, а не в тому сенсі , весь число повинне бути кратне двом. До речі, шкода пройшло так довго, щоб повернутися до вас, сподіваюся, ви не просто сиділи навколо, чекаючи моєї відповіді :-)
Math.Floor() кругляє до негативної нескінченності
Math.Truncate округляє вгору або вниз до нуля.
Наприклад:
Math.Floor(-3.4) = -4
Math.Truncate(-3.4) = -3
поки
Math.Floor(3.4) = 3
Math.Truncate(3.4) = 3
Деякі приклади:
Round(1.5) = 2
Round(2.5) = 2
Round(1.5, MidpointRounding.AwayFromZero) = 2
Round(2.5, MidpointRounding.AwayFromZero) = 3
Round(1.55, 1) = 1.6
Round(1.65, 1) = 1.6
Round(1.55, 1, MidpointRounding.AwayFromZero) = 1.6
Round(1.65, 1, MidpointRounding.AwayFromZero) = 1.7
Truncate(2.10) = 2
Truncate(2.00) = 2
Truncate(1.90) = 1
Truncate(1.80) = 1
Math.floorsliiiide ліворуч ...
Math.ceilsliiiide праворуч ...
Math.truncatecriiiiss crooooss (підлога / стеля завжди у напрямку до 0)
Math.roundcha cha, справжній гладкий ... (перейти до найближчої сторони)
Ходімо на роботу! (⌐ □ _ □)
Ліворуч ... Math.floor
Візьміть це вже зараз ... --
Два хмелі цього разу ...-=2
Всі плескайте в руки
Як низько можна піти? Чи можна спуститися низько? Весь шлях до floor?
if (this == "wrong")
return "i don't wanna be right";
Math.truncate(x)також те саме, що int(x).
видаливши позитивну чи негативну частку, ви завжди прямуєте до 0.
Вони функціонально еквівалентні додатним числам. Різниця полягає в тому, як вони обробляють від’ємні числа.
Наприклад:
Math.Floor(2.5) = 2
Math.Truncate(2.5) = 2
Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2
MSDN-посилання: - Метод Math.Floor - Метод Math.Truncate
PS Остерігайтеся Math.Round, можливо, це не те, чого ви очікуєте.
Щоб отримати "стандартний" результат округлення, використовуйте:
float myFloat = 4.5;
Console.WriteLine( Math.Round(myFloat) ); // writes 4
Console.WriteLine( Math.Round(myFloat, 0, MidpointRounding.AwayFromZero) ) //writes 5
Console.WriteLine( myFloat.ToString("F0") ); // writes 5
Спробуйте це, приклади:
Math.Floor () проти Math.Truncate ()
Math.Floor(2.56) = 2
Math.Floor(3.22) = 3
Math.Floor(-2.56) = -3
Math.Floor(-3.26) = -4
Math.Truncate(2.56) = 2
Math.Truncate(2.00) = 2
Math.Truncate(1.20) = 1
Math.Truncate(-3.26) = -3
Math.Truncate(-3.96) = -3
Також Math.Round ()
Math.Round(1.6) = 2
Math.Round(-8.56) = -9
Math.Round(8.16) = 8
Math.Round(8.50) = 8
Math.Round(8.51) = 9
math.floor()
Повертає найбільше ціле число, менше або рівне вказаному числу. MSDN system.math.floor
math.truncate()
Обчислює невід'ємну частину числа. MSDN system.math.truncate
Math.Floor()круги "до негативної нескінченності" відповідно до стандарту IEEE 754 розділу 4.
Math.Truncate() округляє "до найближчого цілого числа до нуля".
Math.Floor(): Повертає найбільше ціле число, менше або рівне вказаному номеру з плаваючою комою подвійної точності.
Math.Round(): Обводить значення на найближче ціле число або на вказану кількість дробових цифр.
Floor()а Truncate()не Floor()і Round().