Javascript 对正值和负值进行四舍五入?

问题描述 投票:0回答:1

我正在尝试构建一个可以为正值和负值返回正确舍入的函数。

这是我的要求

Input       Output
-1.8550     -1.86
1.8550       1.86
-1384.8540   -1384.85
1384.8540     1384.85
-1384.8550   -1384.86
-1384.8560   -1384.86
-3203.8640   -3203.86 

我尝试了下面,但它不起作用。!

var customRoundOff = function(value) {
  debugger;
  var valueSign = Math.sign(value);
  var numericalPart = Math.abs(Number((value + "").split(".")[0]));
  var decPart = (value + "").split(".")[1];

  if (decPart && numericalPart) {
    var pntedDecimal = Number('0.' + decPart);
    var roundedDecimal = pntedDecimal.toFixed(2);
    var roundedValue = numericalPart + roundedDecimal;
    
    console.log("pntedDecimal", pntedDecimal);
    console.log("roundedDecimal", roundedDecimal);
    console.log("numericalPart", numericalPart);
    console.log("roundedValue", roundedValue);
    
    return roundedValue * valueSign; // Returns float
  } else {
    return value.toFixed(2); // Returns string
  }
}

customRoundOff(-1.8550);

javascript rounding
1个回答
0
投票

您需要添加少量金额才能四舍五入到下一位数字。

这是必要的,因为

toFixed
0.006
舍入到
0.01
,而不是
0.005
0.1

const
    round = n => {
        const sign = Math.sign(n);
        return sign * (Math.abs(n) + 0.000999999999).toFixed(2);
    },
    values = [-1.8550, 1.8550, -1384.8540, 1384.8540, -1384.8550, -1384.8560, -3203.8640];
    
console.log(...values.map(round));

© www.soinside.com 2019 - 2024. All rights reserved.