在JavaScript中舍入到最接近的十进制小数

Spe*_*ter 11 javascript math decimal

我在JavaScript中使用变量表示数字进行简单的数学运算.这是我的代码示例:

var ones = 0;
var fives = 0;
function results (){
    _fives = (fives * 5);
    var res = (_fives + ones);
    document.innerHTML = res;
}
Run Code Online (Sandbox Code Playgroud)

这不是完整的代码,但基本上我让用户输入1美分硬币到100美元钞票的账单和硬币数量.该代码将账单金额乘以账单金额.这是没有问题的工作就好......由于某些原因我的一些结果显示小数像1.899999999997不知道这是怎么回事.

有没有办法改变它,所以它舍入到最接近的十进制小数?

例如,它不是显示1.89999999997,而是实际显示1.90,这不是一个大问题.这是个人的事情,我可以自己解决这个问题,但是如果能够学习如何做以备将来参考,这将是一件好事.

Rod*_*ine 18

更新:MDN实际上有一个很好的十进制舍入示例,可以避免浮点不准确.根据OP,可以将它们的方法修改为始终向上舍入.


原始(有些人不正确)答案

//to round to n decimal places
function round(num, places) {
    var multiplier = Math.pow(10, places);
    return Math.round(num * multiplier) / multiplier;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我没有完全阅读这个问题.既然我们正在谈论货币,我们可能想要将其整合:

//to round up to two decimal places
function money_round(num) {
    return Math.ceil(num * 100) / 100;
}
Run Code Online (Sandbox Code Playgroud)


cal*_*zar 5

这是我个人决定在我正在开发的应用程序之一中使用的!

const roundToHundredth = (value) => {
  return Number(value.toFixed(2));
};

console.log(roundToHundredth(1.98723232))
console.log(roundToHundredth(3.14159265359))
console.log(roundToHundredth(2.67528))
Run Code Online (Sandbox Code Playgroud)

  • 不过,这将为您提供一个字符串,因此如果您需要使用数字,您可能必须将其解析回来。 (4认同)