若是你在谷歌瀏覽器中的控制檯輸入: console.log((0.1 + 0.2) === 0.3); // 輸出false。 git
這個是JavaScript中很常見的一個問題,說明二進制的浮點數不能正確地處理十進制的小數,其實它是遵循二進制浮點數算術標準(IEEE 754),而有意致使的結果。 這個場景在不少應用仍是很適合的,你們能夠百度下IEEE 754就知道這個是啥子東東了。不過,這個也不是很大的問題,首先浮點數中的整數運算時準確的,而小數部分能夠經過指定精度來避免。 Javascript也提供了對數字進行格式化輸出的支持,經過Number對象提供的幾種格式化函數,這些函數都是包含四捨五入的,很是方便地解決這個問題: 1.toExponential([fractionDigits]) :將數字按科學計數法格式返回,其中的fractionDigits值小數點後保留的位數。 2.toFixed([fractionDigits]) :將數字按指定的小數點位數返回,其中的fractionDigits值小數點後保留的位數。 3.toPrecision([precision]) :將數字按指定的精度返回(這個精度不是指小數點後幾位),其中precision是指定的精度值,也可稱有效數字。 eg: var num=56.45678; var rs1=num.toExponential(2);//rs1的值爲5.65e+1 var rs2=num.toFixed(2);//rs的值爲56.46 var rs3=num.toPrecision(2);//rs的值爲56