2015年6月29日 星期一

[JavaScript]小數位數的進位法

JavaScript本身就有各種進位法
Math.round() 四捨五入至整數
Math.floor() 取小於指定數的最大整數
Math.ceil() 取大於指定數的最小整數
不過眼尖的人都會發現「只有整數」,所以不外乎要多寫幾行程式


JavaScript用固定字元的函數就是無條件捨去法, 直接使用就可以了(計算到小數第一位)
無條件捨去
                var BMI = (weight / (height * height);

而JavaScript的四捨五入功能只能用「Math.round()」到整數
可以先乘以10的n次方(視保留位數而定),四捨五入後再除以10的n次方

四捨五入
                var BMI = Math.round((weight / (height * height))*10);                
                BMI = BMI/10;

    //or 
    var BMI = weight / (height * height)
    BMI = BMI.toFixed(1);

不過這樣子,每次都要去調整10的倍數, 常使用的話, 就寫成一個function
不保留小數點的四捨五入法
function myRound(value, len){
  return Math.round(value * Math.pow(10, len)) / Math.pow(10, len);
}
var BMI = (weight / (height * height);
BMI = myRound(BMI, 1) 

除了固定字元外,前面提到的toFixed()可以做為小數第n位的實現方法
會保留小數點的四捨五入法
function myRoundFixed(value, len)
{
  return value.toFixed(len);
}

沒有留言:

張貼留言