在Javascript中四舍五入到最少2位小数,最多4位小数

Sen*_*sei -2 javascript jquery rounding

有没有办法将数字四舍五入到最小2位小数,我的JavaScript。

例:

  1. 10-> 10.00
  2. 20.10-> 20.10
  3. 30.1234-> 30.1234
  4. 40.123456-> 40.1235
  5. 50.1200-> 50.12
  6. 60.123-> 60.123

依此类推...舍入到至少2位小数。我可以为此使用jQuery。

T.J*_*der 5

听起来像你说你要在必要时有至少两个小数位(即使它们是零),并涨转成数字串四(他们不是零)。如果是这样的话:

对于所有现代浏览器:请参阅 Marek 的回答

如果您不能依赖Intl:我唯一能想到的就是使用toFixed(4)然后删除最多两个尾随零:

function format(num) {
  var str = num.toFixed(4);
  return str.replace(/0{1,2}$/, '');
}
function test(test) {
  var result = format(test.num);
  console.log(
    test.num,
    "=>",
    result,
    result == test.result ? "- Pass" : "- Fail"
  );
}

[
    {num: 10, result:  "10.00"},
    {num: 20.10, result:  "20.10"},
    {num: 30.1234, result:  "30.1234"},
    {num: 40.123456, result:  "40.1235"},
    {num: 50.1200, result:  "50.12"},
    {num: 60.123, result:  "60.123"}
].forEach(test);
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您不限于过时的浏览器,我建议您使用此智能功能:

var fmtr = new Intl.NumberFormat('us-us', {
  style: 'decimal',
  useGrouping: false,
  minimumFractionDigits: 2,
  maximumFractionDigits: 4
});

function test(test) {
  var result = fmtr.format(test.num);
  console.log(
    test.num,
    "=>",
    result,
    result == test.result ? "- Pass" : "- Fail"
  );
}

[
    {num: 10, result:  "10.00"},
    {num: 20.10, result:  "20.10"},
    {num: 30.1234, result:  "30.1234"},
    {num: 40.123456, result:  "40.1235"},
    {num: 50.1200, result:  "50.12"},
    {num: 60.123, result:  "60.123"}
].forEach(test);
Run Code Online (Sandbox Code Playgroud)

参考文献:

  • 对我来说最好的答案在这里! (2认同)