js 處理小數的運算

首先要說明的是,不能正確處理小數的運算並不是 JavaScript
語言本身的設計錯誤,其它高級編程語言,如C,Java等,也是不能正確處理小數運算的。

//我們用計算器計算 21*0.9 = 18.9;
//在控制檯計算  21*0.9 = 18.900000000000002;
/*我們都知道,用高級編程語言編寫的程序需要經過解釋、編譯等操作轉變成 CPU(Central Processing Unit) 
 可以識別的機器語言才能運行,而對 CPU 來說,它不識別數的十進制、八進制和十六進制等,我們在程序中聲明
 的這些進制數都會被轉成二進制數進行運算。
*/
console.log(21*0.9);   //18.900000000000002
//例如保留三位小數向上取整
var item = Math.ceil(21*0.9*1000)/1000;
console.log(item);  // 18.901
//解決方法:
var item1 = Math.ceil((21*10)*(0.9*10)/100*1000)/1000;
console.log(item1);  // 18.9

說明:

計算內部使用二進制來計算,如果不想出現 21*0.9 = 18.900000000000002 這樣的情況,我們需要在前端進行轉換。
所以,解決方法就是進行轉換 例如:(21*10)*(0.9*10)/100 = 18.9

這是我在控制檯打印出來的:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章