今天遇到Javascript數值運算的坑,說到底,還是用得少啊。得多用多敲代碼多遇坑。
先介紹以下三個Javascript number取整運算方法.
Math.floor() |
對一個數退一取整 | 例:10.5 -> 10 |
Math.ceil() | 對一個數進一取整 | 例:10.5 -> 11 |
Math.round() | 對一個數四舍五入取整 | 例:10.5 -> 11 |
以上都是為了得到整數的方法
那么對於我們要對浮點數進行精確小數點運算,並在保留的最后一位小數上取整,請看以下解決方案
利用以上取整的方法,並對Number原型進行擴展,先將數值轉換為只有一位小數的整數,取整后再恢復為原來數值。
如“1.234”,保留兩位小數,那么我們先轉換為“123.4”,再利用取整方法取整后,
進一(“124”),退一(“123”),四舍五入(“123”),再去除以我們要保留位數 即10的2次方 (100),就會變為“1.24”,“1.23”,“1.23”這樣子。
//退一,向下 Number.prototype.toFloor = function(num){ return Math.floor(this * Math.pow(10,num)) / Math.pow(10,num); } //進一,向上 Number.prototype.toCeil = function(num){ return Math.ceil(this * Math.pow(10,num)) / Math.pow(10,num); } //四舍五入 Number.prototype.toRound = function(num){ return Math.round(this * Math.pow(10,num)) / Math.pow(10,num); }