为了账号安全,请及时绑定邮箱和手机立即绑定

仅在必要时如何在 JavaScript 中舍入数字

仅在必要时如何在 JavaScript 中舍入数字

HUWWW 2021-10-14 13:24:59
我想在 JavaScript 中舍入一个数字,2 decimal但只在必要时舍入到地方。例如4.5成为4.50和3.331成为3.331。我试过使用,Math.round(number / 100) * 100但是当数字是4.5它给我的时候4.5,我希望它是4.50.我试过使用.toFixed(2),但是当数字是3.331它时它会修复它3.33。任何帮助深表感谢。
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您可以检查固定值是否更改并选择格式类型。


function format(f) {

    return f === +f.toFixed(2)

        ? f.toFixed(2)

        : f.toString()

}


console.log([4.5, 3.331, 3].map(format));


查看完整回答
反对 回复 2021-10-14
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

使用正则表达式检查点后的数字。如果小于 2,则使用toFixed(2),否则什么都不做。


function f(n) {

    let diff = Number(n) - Math.floor(Number(n));

    return /\.[0-9]{2,}/.test(diff.toString()) ? n : n.toFixed(2)

}

const nums = [3.331, 2.5, 3].map(f)

console.log(nums)


查看完整回答
反对 回复 2021-10-14
?
湖上湖

TA贡献2003条经验 获得超2个赞

这看起来像一个字符串格式而不是一个舍入问题:


var value = 4 + '.';

var [num, dec] = value.split('.');


if (dec.length < 2) {

  dec = (dec + '00').substring(0, 2);

}

console.log(`${num}.${dec}`);

可运行的片段:


function format(value) {

  var [num, decimal] = (value + '.').split('.');

  

  if (decimal.length < 2) {

    decimal = (decimal + '00').substring(0, 2);

  }


  return `${num}.${decimal}`;  

}


console.log([4, 4.5, 3.331].map(format));

4 -> 4.00


4.5 -> 4.50


3.331 -> 3.331


查看完整回答
反对 回复 2021-10-14
  • 3 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信