Вы можете использовать следующую функцию, чтобы проверить, имеет ли число десятичные разряды:
function hasDecimal(num){
return !!(num % 1);
}
console.log(hasDecimal(2)); //true
console.log(hasDecimal(2.32423)); //false
Так что, очевидно, некоторые пользователи хотят объяснений.
Я разобью его на части: (num% 1)
Скобки означают выполнение этих операций в первую очередь. num - переменная, переданная функцией. % - символ модуля, который пытается разделить левое число на правое. Если есть остаток, он возвращает его в виде десятичной дроби. Если он делится равномерно, он возвращает 0.
Итак, суммируйте то, что у нас есть. (Num% 1) вернет:
0 при равномерном делении ИЛИ #. ##### если нет
0 == неверно.
[ANY_NUMBER_NOT_ZERO] == true.
Примеры: new Boolean (0) - false, new Boolean (12312.1231) - true
Другие альтернативы: пользователь мог попытаться вернуть значение (num% 1)., Что в основном позволило бы достичь того же. Так как return (0) - false, а return (1.213113) - true.
Но я хотел вернуть логическое значение. Чтобы добавить значение в логическое значение, я добавил! символ перед ним.
Столько, сколько могли знать. значит нет. Но это также превращает значение в логическое значение.
С тех пор! symobol переводит значение в логическое значение и инвертирует его значение. Я использую !! заставить значение в логическое значение и инвертировать его обратно в исходное логическое значение.