Я ищу простой способ в JavaScript, чтобы проверить, если число имеет десятичное место в нем (чтобы определить, является ли оно целым числом). Например,
23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}
Я ищу простой способ в JavaScript, чтобы проверить, если число имеет десятичное место в нем (чтобы определить, является ли оно целым числом). Например,
23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}
Использование модуля будет работать:
num % 1 != 0
// 23 % 1 = 0
// 23.5 % 1 = 0.5
Обратите внимание, что это основано на числовом значении числа, независимо от формата. Он обрабатывает числовые строки, содержащие целые числа с фиксированной десятичной точкой, так же, как целые числа:
'10.0' % 1; // returns 0
10 % 1; // returns 0
'10.5' % 1; // returns 0.5
10.5 % 1; // returns 0.5
20.0
имеет ли десятичная точка программно, если она не выражена в виде строки. Кроме того, ни одно из других решений не получило отрицательного ответа за то, что не занялось этим ;-)"10."
является целым числом, и результат будет точно таким же, как"10"
или10
.Number.isInteger () является частью стандарта ES6 и не поддерживается в IE11.
Она возвращает ложные для
NaN
,Infinity
и не числовых аргументов в то время какx % 1 != 0
возвращает истину.источник
Number.isInteger(12.0)
возвращаетсяtrue
.Number.isInteger('1e3')
естьfalse
, хотяNumber.isInteger(1e3)
это правда. Предполагая, что цель вопроса состоит в том, чтобы найти нецелые значения (а не фактическое присутствие десятичной точки в представлении), тогда строковое значение «12 .0» должно пройти, поскольку оно представляет целое число, но опять-такиNumber.isInteger('12.0')
естьfalse
.number
целым или нет. Если вы вводите строку, вам нужно преобразовать ее вnumber
первую, например, черезparseFloat()
, конечно.Или вы можете просто использовать это, чтобы узнать, не является ли это десятичным числом:
источник
yournumber.toString.indexOf(".")
Наиболее распространенным решением является удаление целой части числа и сравнение ее с нулем следующим образом:
источник
startVal != Math.floor(startVal)
?Math.Floor
Функция принимает значение десятичного и наибольшее значение десятичного допускается в JavaScript является2^53 - 1
или9007199254740991
. Так893144042145698745.3
как больше этого максимума, функция не будет выполнена.Простой, но эффективный!
источник
Math.floor(3.0) == 3.0
верно,Math.floor(3.3) == 3.3
неверно// Как насчет этого?
Я всегда чувствую себя плохо для битовых операторов в javascript-
они вряд ли получают какое-либо упражнение.
источник
>>
преобразует значение в 32-разрядное целое число со знаком .Довольно круто и работает на такие вещи, как XX.0 тоже! Это работает, потому что Math.floor () отбирает любое десятичное число, если оно есть, поэтому, если слово отличается от исходного числа, мы знаем, что это десятичное число! И без преобразования строк :)
источник
источник
num= 999999999999999999999
.Number.isInteger()
наверное, самый лаконичный. Он возвращает истину, если это целое число, и ложь, если это не так.источник
источник
когда передано число,
parseInt()
просто возвращает число как int:источник
parseInt(3.0) === 3.0 // true
преобразовать числовую строку в массив, разделить на десятичную точку Затем, если массив имеет только одно значение, это означает отсутствие десятичного числа в строке.
Таким образом, вы также можете узнать, что такое целые и десятичные числа. более продвинутый пример будет.
источник
Вот отрывок из моей охранной библиотеки (вдохновлен Effective JavaScript Дэвидом Херманом):
источник
Вы можете умножить его на 10, а затем выполнить операцию / деление по модулю на 10 и проверить, равен ли результат этих двух операций нулю. Результат этих двух операций даст вам первую цифру после десятичной точки. Если результат равен нулю, то число является целым числом.
источник
источник
Вы можете использовать побитовые операции, которые не изменяют значение (
^ 0
или~~
), чтобы отбросить десятичную часть, которая может использоваться для округления. После округления числа оно сравнивается с исходным значением:источник
источник
Вы можете использовать следующую функцию, чтобы проверить, имеет ли число десятичные разряды:
По-видимому, некоторые пользователи хотят объяснений. Я разобью его на части: (num% 1)
Скобки означают выполнение этих операций в первую очередь. num - переменная, переданная функцией. % - символ модуля, который пытается разделить левое число на правое. Если есть остаток, он возвращает его в виде десятичной дроби. Если он делится равномерно, он возвращает 0.
Итак, подытожим то, что у нас есть. (Num% 1) вернет:
0 при равномерном делении ИЛИ #. ##### если нет
0 == неверно.
[ANY_NUMBER_NOT_ZERO] == верно.
Примеры: new Boolean (0) равен false new Boolean (12312.1231) равен true
Другие альтернативы: пользователь мог попытаться вернуть значение (num% 1)., Что в основном позволило бы достичь того же. Поскольку return (0) является ложным, а return (1.213113) истинным.
Но я хотел вернуть логическое значение. Чтобы добавить значение в логическое значение, я добавил! символ перед ним.
Столько, сколько может знать. значит НЕ. Но это также превращает значение в логическое значение.
С тех пор! symobol переводит значение в логическое значение и инвертирует его значение. Я использую !! заставить значение в логическое значение и инвертировать его значение обратно к исходному логическому значению.
источник
Функция для контрольного номера является десятичным или целым числом
источник
Возможно, это работает для вас?
Он использует регулярные выражения, чтобы проверить, есть ли запятая в числе, и если нет, то он добавит запятую и полосу.
источник
Используйте следующее, если значением является строка (например, from
<input
):Я добавляю
.toString()
слово floor, чтобы оно работало и в тех случаях, когдаvalue == "1."
(заканчивается десятичным разделителем или другой строкой) ТакжеMath.floor
всегда возвращает некоторое значение, поэтому.toString()
никогда не завершается ошибкой.источник