Javascript 四舍五入到具体数字

Javascript 四舍五入到具体数字,javascript,rounding,Javascript,Rounding,我正在寻找一种标准的JS方法,基本上可以做到这一点: iRoundTo1 = Math.abs(1000000 - myValue); iRoundTo2 = Math.abs(2000000 - myValue); iRoundTo5 = Math.abs(5000000 - myValue); myValue = Math.min(iRoundTo1, iRoundTo2, iRoundTo5); if (myValue === iRoundTo1) { myVa

我正在寻找一种标准的JS方法,基本上可以做到这一点:

iRoundTo1 = Math.abs(1000000 - myValue);
iRoundTo2 = Math.abs(2000000 - myValue);
iRoundTo5 = Math.abs(5000000 - myValue);

myValue = Math.min(iRoundTo1, iRoundTo2,
        iRoundTo5);

if (myValue === iRoundTo1) {
    myValue = 1000000;
} else if (myValue === iRoundTo2) {
    myValue = 2000000;
} else if (myValue === iRoundTo5) {
    myValue = 5000000;
}

如标题所述,我希望将我的值四舍五入到特定的数字,即1M、2M和5m。

不完全确定这是否是您想要的,但我的建议如下:

const temp = Math.abs(myValue / 1000000) * 1000000;
If基本上会将绝对值四舍五入到最接近的百万


您可以添加if或switch语句,根据具体情况将其转换为预定义值。这将减少函数中所需的样板文件。

这里是您需要的代码

函数n,c,d,t{ var c=isNaNc=Math.absc?2:c, d=d==未定义?:d, t=t==未定义?,:t, s=n<0?-:, i=StringparseIntn=Math.absNumbern | | 0.toFixedc, j=j=i.长度>3?j%3:0; 返回s+j?i.substr0,j+t:+i.substrj.replace/\d{3}?=\d/g,$1+t+c?d+Math.absn-i.tofixedc2:; } 函数numShortvalue{ ifvalue<1000000{ 返回值,2。,; }其他ifvalue<100000000{ 返回格式MoneyValue/1000000,2,,+m'; }否则{ 返回格式MoneyValue/1000000000,2,,+b'; } } console.lognumShort100; console.lognumShort1000; console.lognumShort10000; console.lognumShort100000; console.lognumShort1000000; console.lognumShort10000000; console.lognumshort10000000; console.lognumshort100000000; console.lognumshort1000000000;
console.lognumshort10000000000 当然,你必须自己实施这种特殊的事情。 如果您只是想要一些别致的单行解决方案来让代码更干净:

var myValue=1234567; var rounded=[100000000005000000]。reducey,x=>{return y.diff==undefined | | | | Math.absx-myValue控制台。对数圆形;没有标准的方法可以做到这一点。你可以自己写,也可以使用库。你可以轻松地将其舍入到数百万,但不能跳过其他值,如0、3、4、6等。谢谢,我有点希望已经有了解决方案。。。但我想我会放弃一行,我认为多行解决方案更容易阅读,我真的不需要担心性能