У меня есть результаты деления, и я хочу отбросить десятичную часть полученного числа.
Как я могу это сделать?
источник
У меня есть результаты деления, и я хочу отбросить десятичную часть полученного числа.
Как я могу это сделать?
Вы могли бы использовать ...
Math.trunc()
(усеченная дробная часть, также см. ниже)Math.floor()
(округлить вниз)Math.ceil()
(округлять) Math.round()
(округление до ближайшего целого)... в зависимости от того, как вы хотели удалить десятичную.
Math.trunc()
пока не поддерживается на всех платформах (а именно IE), но вы можете легко использовать polyfill .
Другой метод усечения дробной части с превосходной поддержкой платформы - использование побитового оператора (.eg |0
). Побочный эффект использования побитового оператора для числа состоит в том, что он будет рассматривать свой операнд как 32-разрядное целое число со знаком, поэтому удаляя дробный компонент. Имейте в виду, что это также будет искажать числа больше 32 бит.
Вы также можете говорить о неточности десятичного округления с арифметикой с плавающей запятой.
Обязательное чтение - Что должен знать каждый компьютерщик об арифметике с плавающей точкой .
Math.floor()
будет увеличивать числовое значение , когда число отрицательное . Таким образом,Math.floor(-1.2) -> -2
покаMath.floor(1.2) -> 1
.parseInt(-1.2) -> -1
( как упомянуто @FloydPink ) будет отбрасывать десятичную часть, как ожидается, для положительных и отрицательных чисел.> (2.305*100)|0 > 230 > (2.3*100)|0 > 229
2.3*100
в javascript таков229.99999999999997
, что кажется, что побитовый оператор делает свою работу правильно в вашем примере.|0
которое использует 64-битные целые числа?Вы также можете использовать побитовые операторы для усечения десятичного числа.
например
Побитовые операции значительно более эффективны, чем математические функции. Двойной не битовый оператор также, кажется, немного превосходит битовые операции
x | 0
иx << 0
операции на ничтожно малую величину.Также стоит отметить, что побитовый оператор not имеет приоритет над арифметическими операциями, поэтому вам может потребоваться заключить вычисления в круглые скобки, чтобы получить ожидаемый результат:
Больше информации о двойном побитовом операторе not можно найти в Double bitwise NOT (~~)
источник
Вы могли бы также сделать
источник
parseInt
это не будет работать надежно для больших чисел, потому что оно работает, сначала преобразовав свой аргумент в строку, а для больших чисел результат будет использовать экспоненциальную запись. Например:var n = 22222222222222222222222; parseInt(n);
вернется2
, потому чтоn.toString()
вернется2.2222222222222223e+22
.parseInt()
для своей цели, которая состоит в том, чтобы взять число в строке и вернуть aNumber
.Вы также можете показать определенное количество цифр после десятичной точки (здесь 2 цифры), используя следующий код:
источник
Используйте
Math.round()
функцию.источник
$.round = Math.round
;)Использование
Math.round()
.(Ответ Алекса лучше; я сделал предположение :)
источник
С ES2015 доступен Math.trunc () .
Это не поддерживается в IE11 или ниже, но работает в Edge и любом другом современном браузере.
источник
Math.trunc(value * Math.pow(10,x)) / Math.pow(10,x)
это сработает?value = 2.3
иx = 2
вернется2.29
. У меня нет лучшего предложения.Если вы не заботитесь о маршрутизации, просто преобразуйте число в строку, а затем удалите все после периода, включая период. Это работает независимо от того, есть ли десятичное число или нет.
источник
toFixed будет вести себя как раунд.
Для поведения, подобного полу, используйте%:
источник
Вот подробное объяснение с помощью вышеприведенных постов:
1. Math.trunc (): используется для удаления тех цифр, за которыми следует точка. Он конвертируется неявно. Но не поддерживается в IE.
Пример:
Math.trunc (10.5) // 10
Math.trunc (-10,5) // -10
Другой альтернативный способ: использование побитового оператора not:
Пример:
х = 5,5
~~ x // 5
2. Math.floor (): используется для определения минимального целочисленного значения. Поддерживается во всех браузерах.
Пример:
Math.floor (10,5) // 10
Math.floor (-10,5) // -11
3. Math.ceil (): используется для получения максимально возможного целочисленного значения. Поддерживается во всех браузерах.
Пример:
Math.ceil (10,5) // 11
Math.ceil (-10,5) // -10
4. Math.round (): округляется до ближайшего целого числа. Поддерживается во всех браузерах.
Пример:
Math.round (10,5) // 11
Math.round (-10,5) // -10
Math.round (10.49) // 10
Math.round (-10,51) // -11
источник
Например:
или
источник
Для реализации ES6 используйте что-то вроде следующего:
источник
Это для тех, кто хочет запретить пользователям вводить десятичные числа
источник
Вы можете использовать .toFixed (0), чтобы удалить полную десятичную часть или предоставить число в аргументах, до которого вы хотите усечь десятичную дробь.
Примечание: toFixed преобразует число в строку.
источник