javascript中的问题困扰着我

时间:2011-04-14 12:38:03

标签: javascript math rounding

你好我想在javascript中舍入一个数量,但无法做到并完全陷入困境。 我的方案是,base金额为marukup %basetotal amount。在这两个基础上,我想计算amount=base+((base/100)*markup。我已计算出金额,但我想对结果进行舍入。 我使用了以下公式

math.round

这个公式总是给我一个没有小数点的结果。我希望得到精确的数量,最多两个小数点。我已经像这样使用了amount=math.round(base+((base/100)*markup).toFixed(2)

121

但它总是返回没有小数点的结果。例如,我的基值为5%,标记为amount127.05应为127。但是上面的公式总是返回{{1}}。任何指导方针?

4 个答案:

答案 0 :(得分:2)

我很确定math.round会返回一个整数。即使你把它翻过来,反正它也只是127.00。

这是正确的解决方案(但这并不容易):
不要使用非整数值来赚钱!
它不起作用。

使用整数美分。 也就是说,在您的应用中保留12700而不是127 这样,所有舍入都应该可以正常工作。

答案 1 :(得分:1)

toFixed(n)函数将Number舍入为 n 小数,根本不需要使用Math.round。尝试:

total = function (base, markup) { return (base + (base * markup / 100)); }; 
amount = total(121,5).toFixed(2);

请注意,amount将是typeof String而不是Number

答案 2 :(得分:0)

这应该有效:     amout =(Math.round((base *(1 + markup))* 100)/ 100).toFixed(2)

顺便说一句,我使用的标记是5/100 ......

答案 3 :(得分:0)

对我来说听起来像整数除法问题。我猜javascript将100视为int。

试试这个:

amount=(base+((base/100.toFixed(2))*markup).toFixed(2)