Почему круглое значение отличается? - PullRequest
0 голосов
/ 02 октября 2019

Я знаю, если я округлю -1,5, это -2.

, поэтому я попытался сделать с C #, он возвращает -2 правильно.

Console.WriteLine(Math.Round(-1.5, 0));

также я пытался сделать сExcel, он также возвращает -2.

=Round(-1.5,0)

, но когда я делаю с javascript, он возвращает -1.

Math.round(-1.5)

, почему эти значения отличаются?

и как я могу получить -2 вместо -1, когда я делаю это с JavaScript?

Ответы [ 3 ]

2 голосов
/ 02 октября 2019

Да, раунд в javascript работает, как вы сказали. Одним из решений является преобразование отрицательного числа в положительное, а затем использование Math.round. Наконец вы должны преобразовать свой номер в отрицательное число.

function myFunction() {
  num = -1.5;
  document.getElementById("demo").innerHTML = Math.round(num);
  if(num < 0)
  document.getElementById("demo").innerHTML = -1 *  Math.round(Math.abs(num));
}
2 голосов
/ 02 октября 2019
Math.round(Math.abs(-1.5));

ваше значение отрицательно, поэтому оно получает -1. Просто получите абсолютное значение, а затем округлите его и умножьте на -1, чтобы получить -2.

1 голос
/ 02 октября 2019

Вот как они это сделали. Признается, что он отличается от большинства языков.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round

Если дробная часть аргумента больше 0,5, аргумент округляется до целого числа сследующее более высокое абсолютное значение. Если оно меньше 0,5, аргумент округляется до целого с меньшим абсолютным значением. Если дробная часть равна точно 0,5, аргумент округляется до следующего целого числа в направлении + ∞. Обратите внимание, что это отличается от функций round () многих языков, которые часто округляют этот случай до следующего целого числа от нуля, вместо этого давая другой результат в случае отрицательных чисел с дробной частью, равной точно 0,5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...