Определение переменной и приведение к int - PullRequest
0 голосов
/ 03 октября 2018

У меня проблемы с переменной в JavaScript, которой я хочу быть int.Вначале это выглядело как int, затем я провел некоторую диагностику и обнаружил, что это не так.В конечном счете, я хочу привести его к int.

Это код, который я использовал:

console.log(variable);
var isInt = variable % 1 === 0;
console.log('The variable is int?');
console.log(isInt);
var isFloat = +variable && variable !== (variable|0);
console.log('The variable is float?');
console.log(isFloat);

И вот результаты:

2,365
The variable is int?
false
The variable is float?
NaN

строка для проверки, является ли переменная float Я получил ее из этого вопроса: Как проверить, является ли число плавающим или целым числом? Это второй ответ.

NaNозначает, что моя переменная, вероятно, string?

РЕДАКТИРОВАТЬ: мой вопрос отличается от вопроса, предлагаемого в качестве решения, так как я не уверен, является ли моя переменная с плавающей или целочисленной, поэтому я пытаюсь определить егопервый.Я выбрал части из ответов на этот вопрос, но это не сработало.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Примечание: parseInt() обрежет все десятичные дроби!

Если вы получаете "цифры" (строки) с , в качестве десятичного знака, и вы хотитечтобы превратить их в целые числа путем округления , вы можете использовать это:

function toInt(x) {
  if (!isNaN(x)) return Math.round(x);
  if (typeof x == "string") x = x.replace(",", ".");
  return Math.round(parseFloat(x));
}

console.log(toInt(5));
console.log(toInt(5.5));
console.log(toInt("5"));
console.log(toInt("5.5"));
console.log(toInt("5,5"));

Укороченная версия:

const toInt = x => Math.round(isNaN(x) ? (typeof x == "string" ? x.replace(",", ".") : x) : x);
0 голосов
/ 03 октября 2018

в первой строке попробуйте

console.log(typeof variable)

, и это скажет вам, что тип переменной - строка или нет , которая может вызвать NaN впоследняя проверка

...