我正在尝试构建一个可以为正值和负值返回正确舍入的函数。
这是我的要求
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);
您需要添加少量金额才能四舍五入到下一位数字。
这是必要的,因为
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));