在使用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>
什么事?
答案 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中没有用于数字解析的语言环境设置,因此您不得不更加习惯:
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;
答案 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.