Отрицательные числа могут добавить некоторые причуды, о которых нужно знать людям.
Подходы в стиле
printf
дают нам правильные числа, но могут привести к некоторым странным проявлениям. Мы обнаружили, что этот метод (на мой взгляд, глупо) ставит знак -
независимо от того, должен он или нет. Например, -0,01, округленное до одного десятичного знака, возвращает -0,0, а не просто 0. Если вы собираетесь использовать стиль в стиле printf
и знаете, что вам не нужно десятичное число, используйте %d
, а не %f
(когда вам нужны десятичные дроби, это когда дисплей становится шатким).
Хотя это правильно и для математики не имеет большого значения, для отображения это выглядит просто странно, показывая что-то вроде "-0.0".
Для метода int отрицательные числа могут изменить то, что вы хотите в результате (хотя есть некоторые аргументы, которые можно привести, они верны).
int + 0.5
вызывает реальные проблемы с отрицательными числами, если только вы не хотите, чтобы это работало так, но я думаю, что большинство людей этого не делают. -0.9, вероятно, должно округляться до -1, а не 0. Если вы знаете, что хотите, чтобы отрицание было потолком, а не полом, то вы можете сделать это в одной строке, в противном случае вы можете использовать метод int с второстепенным модификация (очевидно, это работает только для получения целых чисел:
my $var = -9.1;
my $tmpRounded = int( abs($var) + 0.5));
my $finalRounded = $var >= 0 ? 0 + $tmpRounded : 0 - $tmpRounded;