2012-12-03 139 views
0

我有一個奇怪的問題,當在ng-bind中使用數學表達式時,結果是意外的。根據我的實驗,問題只發生在被加數的第一部分是15以上,第二部分只有1.112時。AngularJS數學運算

納克綁定= 「總和= 16 + 1.112」 NG-模型= 「總和」 值= 「16.112000000000002」

回答

3

這是一個標準的浮點舍入問題。浮點數用基數2表示,所以大多數有限小數沒有精確表示(二進制)浮點數。 JavaScript使用IEEE754雙精度數與精度53位,最接近編號以1.112然後

1.1120000000000000994759830064140260219573974609375 

加入15到需要多於53位表示有效,所以它必須是圓形的,其結果是

16.11200000000000187583282240666449069976806640625 

和比最接近IEEE754雙精度數到16.112,這是

16.111999999999998323119143606163561344146728515625 

並且因此第一非零數字的16.112後大顯示區分它與最接近的數字16.112

+0

任何解決方案來獲得所需的格式? – wajatimur

+1

取決於你想要的東西。可能'toFixed()'會做,'sum.toFixed(3)'左右。 –