2011-04-14 118 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)