JavaScript中的精確財(cái)務(wù)計(jì)算。什么是陷阱?
您可能應(yīng)該將小數(shù)點(diǎn)后的值乘以100,并將所有貨幣值表示為整分。JavaScript中沒有十進(jìn)制數(shù)據(jù)類型-唯一的數(shù)字?jǐn)?shù)據(jù)類型是浮點(diǎn)數(shù)。因此,通常建議將錢作為2550美分而不是25.50美元。
考慮一下JavaScript:
var result = 1.0 + 2.0; // (result === 3.0) returns true
但:
var result = 0.1 + 0.2; // (result === 0.3) returns false
該表達(dá)式0.1 + 0.2 === 0.3返回false,但幸運(yùn)的是,浮點(diǎn)數(shù)的整數(shù)運(yùn)算是精確的,因此可以通過縮放1來避免小數(shù)表示錯誤。
請注意,盡管實(shí)數(shù)集是無限的,但只能用JavaScript浮點(diǎn)格式精確表示實(shí)數(shù)中的有限數(shù)(準(zhǔn)確地說是18,437,736,874,454,810,627)。因此,其他數(shù)字的表示將是實(shí)際數(shù)字2的近似值。
解決方法為了創(chuàng)建跨平臺代碼,我想用JavaScript開發(fā)一個簡單的財(cái)務(wù)應(yīng)用程序。所需的計(jì)算涉及復(fù)利和相對較長的十進(jìn)制數(shù)。我想知道使用JavaScript進(jìn)行此類數(shù)學(xué)運(yùn)算時(shí)應(yīng)避免的錯誤-如果有可能的話!
相關(guān)文章:
1. javascript - 關(guān)于<a>元素與<input>元素的JS事件運(yùn)行問題2. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效3. docker start -a dockername 老是卡住,什么情況?4. java - 為什么第一個線程已經(jīng)釋放了鎖,第二個線程卻不行?5. mysql - 記得以前在哪里看過一個估算時(shí)間的網(wǎng)站6. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風(fēng)格檢查怎么辦。。。7. 大家好,我想請問一下怎么做搜索欄能夠搜索到自己網(wǎng)站的內(nèi)容。8. python - 啟動Eric6時(shí)報(bào)錯:’qscintilla_zh_CN’ could not be loaded9. html - vue項(xiàng)目中用到了elementUI問題10. mysql - 查詢字段做了索引為什么不起效,還有查詢一個月的時(shí)候數(shù)據(jù)都是全部出來的,如果分拆3次的話就沒問題,為什么呢。
