你好我想在javascript中舍入一个数量,但无法做到并完全陷入困境。
我的方案是,base
金额为marukup %
,base
为total amount
。在这两个基础上,我想计算amount=base+((base/100)*markup
。我已计算出金额,但我想对结果进行舍入。
我使用了以下公式
math.round
这个公式总是给我一个没有小数点的结果。我希望得到精确的数量,最多两个小数点。我已经像这样使用了amount=math.round(base+((base/100)*markup).toFixed(2)
121
但它总是返回没有小数点的结果。例如,我的基值为5%
,标记为amount
。 127.05
应为127
。但是上面的公式总是返回{{1}}。任何指导方针?
答案 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)