Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Разница между Math.Floor() и Math.Truncate()
Math.Floor раундов вниз, Math.Ceiling раундов вверх и Math.Truncate раундов к нулю. Таким образом, Math.Truncate -это как Math.Floor для положительных чисел и как Math.Ceiling для отрицательных чисел. Вот вам и ссылка .
Для полноты описания Math.Round округляет до ближайшего целого числа. Если число находится точно посередине между двумя целыми числами, то оно округляется в сторону четного числа. Ссылка.
Смотрите также: ответ Pax Diablo . Очень рекомендую!
Следуйте по этим ссылкам для 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
Примеры:
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.Floor(2.5) = 2
Math.Truncate(2.5) = 2
Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2
MSDN ссылки: - Math.Floor Метод - Math.Truncate Метод
P.S. Остерегайтесь Math.Round это может быть не то, что вы ожидаете.
Для получения результата округления "standard" используйте:
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() раундов
"toward negative infinity" в соответствии со стандартом IEEE 754 раздел 4.
Math.Truncate() раундов " до ближайшего целого числа по направлению к нулю."
math.floor()
Возвращает наибольшее целое число, меньшее или равное указанному числу.
MSDN system.math.floor
math.truncate()
Вычисляет интегральную часть числа.
MSDN system.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