Как заставить «10.0» возвращать true, а «10» возвращать false

function validateResponse(number) {
    console.info(typeof(Math.round(number)))
    console.info(typeof(number))
    if ((isNaN(number)) || (Math.round(number) !== parseFloat(number)))
        return true;
    else
        return false
    //checks if number is integer and checks for decimal places
}

let input = require("readline-sync");



console.info(validateResponse("10"));
console.info(validateResponse("10.0"));

Я новичок в Javascript, поэтому мои знания о нем ограничены. Поправьте меня, если я ошибаюсь, но Javascript автоматически преобразует «10.0» в 10, если я не использовал parseFloat?

🤔 А знаете ли вы, что...
Синтаксис JavaScript схож с синтаксисом языка программирования Java, но они не связаны.


50
2

Ответы:

Решено

Вы можете использовать метод includes("."), чтобы проверить, содержит ли ввод десятичную точку. Полный код будет выглядеть так:

function validateResponse(number) {
  const numberValue = parseFloat(number);

  return !isNaN(numberValue) && number.includes(".");
}

Зависит от ваших реальных требований, но это выполнит то, о чем вы просили. Он проверяет, равна ли строка числа строке округленного числа, и, поскольку 10,0 округляется до 10, они не равны, поэтому возвращает true, а 10 возвращает false.

function validateResponse(number) {
  return number.toString() !== parseInt(number).toString();
}