1. 程式人生 > >浮點計算

浮點計算

js浮點計算

方法一: 指定要保留的小數位數

(0.1+0.2).toFixed(1) = 0.3;

這個方法toFixed是進行四捨五入的也不是很精準,對於計算金額這種嚴謹的問題,不推薦使用,而且不通瀏覽器對toFixed的計算結果也存在差異。

方法二: 把需要計算的數字升級(乘以10的n次冪)成計算機能夠精確識別的整數,等計算完畢再降級(除以10的n次冪),這是大部分程式語言處理精度差異的通用方法。

eg:(0.1 * 10 + 0.2 * 10) / 10 == 0.3

// toFixed 修復

 function toFixed(num, s)
{ var times = Math.pow(10, s) var des = num * times + 0.5 des = parseInt(des,> 10) / times return des + '' }

//php

    bcadd — 將兩個高精度數字相加

  bccomp — 比較兩個高精度數字,返回-1, 0, 1

  bcdiv — 將兩個高精度數字相除

  bcmod — 求高精度數字餘數

  bcmul — 將兩個高精度數字相乘

  bcpow — 求高精度數字乘方

  bcpowmod — 求高精度數字乘方求模,數論裡非常常用

  bcscale — 配置預設小數點位數,相當於就是Linux bc中的”scale=
”   bcsqrt — 求高精度數字平方根   bcsub — 將兩個高精度數字相減