JavaScript“parseInt()”十进制字符串的问题

时间:2015-03-06 08:36:56

标签: javascript

在使用toString函数后,我在电子商务网页的购物车代码中获取了total_amount,但是当我将14.82字符串转换为int数时,小数就会消失。

<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>

什么事?

5 个答案:

答案 0 :(得分:19)

如果输入字符串为"14,82"且您想要值14.82,则需要将,转换为.,然后使用{{ 1}}:

parseFloat

var total_amount_int = parseFloat( total_amount_string.replace(/,/g, ".") ).toFixed(2); 只会解析定义整数的字符串的前导部分(&#34; int&#34; =&#34;整数&#34; =&#34;整数&#34; ),所以它停在parseInt,将解析十进制数字,但只能将parseFloat理解为小数点,而不是.,即使在,为小数点的区域设置中也是如此。

答案 1 :(得分:10)

你应该使用parseFloat()而不是parseInt()。因为整数不是十进制数。

答案 2 :(得分:2)

并且整数没有小数部分,因此任何“转换”为int的数字都将丢失其小数。如果要保留小数部分,则应使用parseFloat。 另一方面,请确保您没有使用逗号:Javascript parse float is ignoring the decimals after my comma

答案 3 :(得分:0)

您的号码正在使用&#34;,&#34;分隔器。遗憾的是,在JavaScript中没有用于数字解析的语言环境设置,因此您不得不更加习惯:

&#13;
&#13;
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;
&#13;
total_amount_string: <span id="total_amount_string"></span>
<br />
total_amount_float: <span id="total_amount_float"></span>
&#13;
&#13;
&#13;

答案 4 :(得分:-2)

 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.