2011-04-14 119 views
0

你好我想在JavaScript中舍入一笔金额,但无法完成并完全卡住。 我的方案是,我有base金额和marukup %base。在这两个基础上我想计算total amount。我已经计算了金额,但我想对结果进行四舍五入。 我用下面的公式在javascript中卡住了我

amount=base+((base/100)*markup

这个公式总是给我的结果,而不小数点。我想获得精确的金额高达两个小数点。我用math.round这样

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

但它总是返回结果没有小数点。例如,我的基准值是121,标记是5%amount应该是127.05。但以上公式总是返回127。任何指引?

+0

不知道你在做什么,但是'121 +((121/100)* 5)'给了我'127.05'。 'Math.round'总是[舍入到最接近的整数](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Math/round),据我了解,你不想要。 – 2011-04-14 12:41:45

+0

@Flex Kling谢谢,但我想回答最多2位小数。我该怎么做? – 2011-04-14 12:51:02

+0

所有你想知道的关于舍入在JavaScript和格式为金钱:http://www.merlyn.demon.co.uk/js-round.htm#RiJ – RobG 2011-04-14 13:25:51

回答

1

toFixed(n)功能四舍五入数量ñ小数,就没有必要使用Math.round可言。尝试:

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

注意amounttypeof String而不是Number

0

这应该工作: 大写金额=(Math.round((基*(1个+标记))* 100)/ 100).toFixed(2)

顺便说,我使用的标记为5/100 ...

2

我很确定math.round返回一个整数。即使你四舍五入,反正它只是127.00。

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

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

0

听起来像一个整数除法问题给我。我猜想,JavaScript将100看作一个整数。

试试这个:

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