Как часто вы окружаете различные цифры своей повседневной работы? Вы знаете, какой тип округления вы на самом деле используете?
Давайте сравним несколько языков программирования и их по умолчанию (То есть без дополнительных параметров, если функция округления позволяет это) методы округления.
Я использую два понятия округления: Окружение банкира и Круглый половина вверх . Больше информации о различных методах можно найти на Википедия Анкет
.СЕТЬ
В Dotnet (Framework, Core, 5+) Окружение банкира используется по умолчанию.
Math.Round(0.5); // 0 Math.Round(1.5); // 2 Math.Round(2.5); // 2 Math.Round(3.5); // 4
Если вам нужно Круглый половина вверх , используйте следующее
Math.Round(0.5, MidpointRounding.AwayFromZero); // 1 Math.Round(1.5, MidpointRounding.AwayFromZero); // 2 Math.Round(2.5, MidpointRounding.AwayFromZero); // 3 Math.Round(3.5, MidpointRounding.AwayFromZero); // 4
JavaScript
В JavaScript Круглый половина вверх используется по умолчанию.
Math.round(0.5); // 1 Math.round(1.5); // 2 Math.round(2.5); // 3 Math.round(3.5); // 4
Python (2,7, 3+)
В Python 2.7 Круглый половина вверх используется по умолчанию.
round(0.5) # 1 round(1.5) # 2 round(2.5) # 3 round(3.5) # 4
Но в Python 3+ Окружение банкира используется по умолчанию.
round(0.5) # 0 round(1.5) # 2 round(2.5) # 2 round(3.5) # 4
Честно говоря, это было довольно удивительно.
Ява
В Java (JDK 1.8.0, 9, 10, 11) Круглый половина вверх используется по умолчанию.
Math.round(0.5); // 1 Math.round(1.5); // 2 Math.round(2.5); // 3 Math.round(3.5); // 4
Идти
В go Круглый половина вверх используется по умолчанию.
math.Round(0.5) // 1 math.Round(1.5) // 2 math.Round(2.5) // 3 math.Round(3.5) // 4
Но если хочешь Окружение банкира Для этого тоже есть функция по умолчанию.
math.RoundToEven(0.5) // 0 math.RoundToEven(1.5) // 2 math.RoundToEven(2.5) // 2 math.RoundToEven(3.5) // 4
PHP
В php Круглый половина вверх используется по умолчанию.
round(0.5); # 1 round(1.5); # 2 round(2.5); # 3 round(3.5); # 4
Оригинал: “https://dev.to/semuserable/flavours-of-rounding-42e0”