2016-06-17 2 views
0

Мне нужно округлить значение с 2 десятичными знаками, которые я получаю от веб-службы. Для этого я использую эти методы toFixed и parseFloat, потому что мне нужно конечное значение в поплавке. Однако, когда у меня есть это значение «5,5000000» он показывает мне значение только с одного десятичного знака «5.5» ...Разбор для плавания с 2 знаками после запятой

я сделал таким образом:

var num = 5.5000000; 
var n = num.toFixed(2); 
var numFinal = parseFloat(n); 
+0

Если у вас есть номер и вам нужна строка, вам не нужна 'parseFloat()', потому что эта функция выполняет полную противоположность (преобразование из строки в число). –

+0

, но метод toFixed возвращает строку, и я хочу, чтобы float – sampaioPT

+0

'" 5.5000000 "' - это то, как отображается float при его печати. Нет прямого перевода между внутренним представлением базы 2 числа с плавающей запятой и десятичными знаками в заданном представлении базы 10. –

ответ

1

Вы должны вызвать toFixed после parseFloat :

parseFloat(yourString).toFixed(2) 
+1

'var newString = ... ' – Aprillion

+0

, когда я использую метод« toFixed », он возвращает строку -> http://www.w3schools.com/jsref/jsref_tofixed.asp , и я хочу поплавок в конечной переменной. Однако спасибо за ваш ответ – sampaioPT

+1

Имея float с 2 десятичными знаками, форматирует значение float, т. Е. Преобразуя его в строку. Если вы хотите использовать значение float, вам не нужно удалять остальную часть поплавка. –

0

Вы можете сделать что-то вроде этого

/** 
     * Convert the value to the Number with the precision. 
     * @param {Number} value   value to be converted 
     * @param {Number} [precision=0] number of decimal places 
     * @returns {Number} converted number. 
     */ 
     function toNumber (value, precision) { 
     precision = precision || 0; 
     if (precision === 0) { 
      return value * 1; 
     } else { 
      return Number((value * 1).toFixed(precision)); 
     } 
     } 
+0

@Hitesk Kumar благодарит за ваш ответ. Однако, когда у меня есть это значение 5.5000004, вывод будет 5.5 только с одним десятичным знаком, и я хочу с 2 десятичными знаками, такими как 5.50 – sampaioPT

Смежные вопросы