好的,我正在构建一个自定义在线发票应用程序,在创建发票页面上,我已将其设置为默认显示一行项目。但是通过单击“新行”按钮,它会向表中添加行以获取更多项目。如果你改变主意,你也可以删除行。
现在,以上所有工作都很好。我决定更进一步,自动计算每一行(行总数)以及整个表(总计)的总计。这是我遇到问题的地方。
Line Total:
我总共有以下javascript:
function Calculate() {
var par = $(this).parent().parent();
var price = $(par).find('input#price').val();
var qty = $(this).val();
var total = price*qty;
$(par).find('input#total').val(total);
CalculateTotal(total);
}
如果price
为$12.95
且qty
为2
,则上述脚本会返回25.9
我希望它返回$25.90
而不是Grand Total:
。
function CalculateTotal(rowTotal) {
y = $("#Gtotal").text();
z = rowTotal;
x = +y + +z;
$("#Gtotal").text(x);
}
(自动从上述功能调用)
25.9
基于上面的示例,上述函数也将返回25.90
。我还想要返回0
如果我将表中的数量更改为2
,则总计不会更改。但是,如果我将qty更改为38.849999999999994
,它将返回dynamic calculations in javascript
它在测试表时遇到了更多问题。我不会在此列出。
很明显你可以看到,我需要一种更好的方法来处理javascript中的计算。我在javascript方面不是很有经验,所以任何帮助都会非常好。我真的需要{{1}}
因为我的代码不会以漂亮的格式复制到这里。我创建了一个jsFiddle,允许您查看表格的完整代码以及我的javascript。 CLICK HERE TO SEE FIDDLE
答案 0 :(得分:0)
您可以使用parseFloat将输入值转换为浮点值。和parseInt进行整数转换。请务必阅读文档的工作原理(特别是parseInt,不要忘记指定基数的第二个参数)。
请参阅http://jsfiddle.net/vCs6E/6/了解工作小提琴。
由于SO需要工作代码,因此这里是Calculate()
中的更新行 var total = parseFloat(price) * parseFloat(qty);
答案 1 :(得分:0)
使用选中的答案和它:
var someNumber = 99.999923423;
// shows 99.99
console.log(someNumber.toFixed(2));
会有所帮助。