2015-03-06 3 views
3

Я получаю total_amount в корзинном коде веб-страницы электронной коммерции после использования функции toString, но когда я конвертирую строку 14.82 в число int, десятичные знаки исчезают.Проблемы с JavaScript «parseInt()» десятичная строка

<script> 
var total_amount_string = <?=json_encode($cart['total_pvp'])?>;//-> 14,82 
var total_amount_int = parseInt(total_amount_string).toFixed(2); //-> 14.00(here is the error) 

console.log(total_amount_string) //-> 14,82 
console.log(total_amount_int) //-> 14.00 
</script> 

Что случилось?

+0

это из-за ',' 'в 14,82' .. .Какое ожидаемое значение ... –

ответ

9

Если входная строка "14,82" и вы хотите значение 14.82, вам необходимо преобразовать , в ., а затем использовать parseFloat:

var total_amount_int = parseFloat(
     total_amount_string.replace(/,/g, ".") 
    ).toFixed(2); 

parseInt только разобрать ведущую часть строки, которая определяет целое число («Int» = «целое число» = «целое число»), так что он останавливается на ,. parseFloat будет анализировать десятичное число, но только понимает . как десятичную точку, а не ,, даже в тех местах, где , - это десятичная точка.

+0

Wireless вышвырнул, когда я набрал ответ, - вы избили меня до него. +1 –

+0

Работа прекрасна! :) –

5

вы должны использовать parseFloat() вместо parseInt(). Потому что целое число не десятичное.

2

И целое число не имеет десятичной части, поэтому любое число «casted» to int потеряет десятичные знаки. Вы должны использовать parseFloat, если хотите сохранить десятичную часть. С другой стороны, убедитесь, что вы не используете запятую: Javascript parse float is ignoring the decimals after my comma

-1
The parseInt() function parses a string and returns an integer.ParseInt  
return Only the first number in the string is returned!. If the first   character cannot be converted to a number, parseInt() returns NaN. 
0

Ваш номер использует разделитель «,». К сожалению, нет настройки локали для разборе числа в JavaScript, поэтому вы вынуждены немного более Hacky:

var total_amount_string = "14,823462"; 
 
var total_amount_float = parseFloat(total_amount_string.replace(",", ".")).toFixed(2); 
 

 
document.getElementById("total_amount_string").innerText = total_amount_string; 
 
document.getElementById("total_amount_float").innerText = total_amount_float;
total_amount_string: <span id="total_amount_string"></span> 
 
<br /> 
 
total_amount_float: <span id="total_amount_float"></span>

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