Измените строку, представляющую собой число, заключенное в запятые, на parsefloat (например, 3.00)

#javascript #node.js #json #string #floating-point

#javascript #node.js #json #строка #с плавающей запятой

Вопрос:

Я извлекаю значение, которое возвращается с запятыми вокруг числа. Я хочу преобразовать это в число, а затем выполнить сравнения с другим числом позже в моем коде. Но, похоже, я не могу получить надежное извлечение числа.

 // Output from duration is ",3.000000,";
console.log('ffmpeg duration output: ', duration.toString('utf8'));
console.log('ffmpeg duration output with replace: ', duration.toString('utf8').replace(/^,/, ''));
console.log('ffmpeg duration output with parsefloat: ', duration.parseFloat);
console.log('ffmpeg duration output with parsefloat: ', parseFloat(duration.replace(',', ''));
  

ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ: 3.00 (В виде числа с двумя десятичными знаками [с плавающей запятой])

Комментарии:

1. Почему вы ожидаете 2, а не 3? duration это строка, что вы пытаетесь сделать с duration.output которой undefined ? Также невозможно получить число с предопределенным количеством знаков после запятой. Это возможно только со строкой.

2. Извините за мою опечатку, значение переменной duration равно ",3.000000,"

Ответ №1:

Простого регулярного выражения должно хватить для извлечения , из строки и быть в состоянии задать строку для parseFloat .

 duration = duration.replace(/,/g, '');
  

Предположение здесь: duration это то, где находится строка ",3.000," . В противном случае замените duration на везде, где находится эта строка.

Комментарии:

1. Можно ли это поместить в одну строку с помощью parsefloat?

2. parseFloat(duration.replace(/,/g, ''));

3. Если строка на самом деле является числом «3», будет ли JS рассматривать ее как число при использовании в сравнениях? т.е. «5 > длительность истинна?

4. Да, JS увидит это как число, если оно равно 3.