我想做一些数学,如加号,减号等,带小数值。
所以我写了两个函数;
function to_decimal(i){
var $dec = parseFloat(i);
return $dec.toFixed(2);
}
function calc_price(){
var $t = $('#sub_total .total').text();
var $total = to_decimal($t);
$('#price_list ul li').each(function(){
var $p = to_decimal($(this).find('.item_price').text());
$total = $total + $p;
});
$t = $('#sub_total .total').text($total);
}
但是这些函数无法正常工作我认为因为结果返回的字符串如0.0010.30
问题出在哪里?
答案 0 :(得分:5)
您需要在该声明前添加+
并且您没事:
return +$dec.toFixed(2);
这会将字符串转换为数字。如果字符串无法转换,它将返回NaN
值。
答案 1 :(得分:0)
而不是:
return $dec.toFixed(2);
执行:
return Math.round($dec*100)/100;
答案 2 :(得分:0)
toFixed
方法返回一个字符串。任何不影响输出的数学运算都可以用来将字符串转换为数字(加法除外,其运算符不幸地兼作字符串连接运算符):
$dec.toFixed(2) - 0
$dec.toFixed(2) / 1
$dec.toFixed(2) * 1
+$dec.toFixed(2)
这些是最快的方法。但是,如果速度不是问题(并且可能不是在执行少量操作时),那么将字符串转换为数字的最清晰,最易读的方法是Number
构造函数:
Number($dec.toFixed(2))
修改:上述效果信息可能不再普遍适用。 Number
构造函数确实比IE 7.0和Firefox 5中的每个替代品慢得多,但实际上在Chrome 12.0.742中表现最佳。
请参阅: