我想将一个数字四舍五入到最接近的千位,此时我正在使用它:
Math.ceil(value/1000)*1000;
但是这总是向上,如果我输入1001它会转到2000,我想上升或下降取决于数字,例如1001变为1000或1400变为1000但1500变为2000
编辑:
if(value<1000){
value = 1000;
}else{
value = Math.round(value/1000)*1000;
}
答案 0 :(得分:47)
这将做你想要的:
Math.round(value/1000)*1000
的示例:
Math.round(1001/1000)*1000
1000
Math.round(1004/1000)*1000
1000
Math.round(1500/1000)*1000
2000
答案 1 :(得分:3)
var rest = number % 1000;
if(rest > 500)
{ number = number - rest + 1000; }
else
{ number = number - rest; }
也许有点直接..但是这样做
编辑:当然这应该是某种myRound()函数
我读到了你的1需要舍入到1000的问题。 与其他行为相比,这种行为是有争议的 - 因此您必须添加以下内容:
if(number < 1000)
{ number = 1000; return number; }
你的功能;
答案 2 :(得分:1)
不是确切的点,但是要将 1250 之类的数字四舍五入到 1.2k 或 55730 到 55,7m,您可能会使用以下内容:
let value = 90731+'';
let len = value.length;
let sym = len>6?'m':'k';
let hundred = (len==9||len==6);
if(len>3){
value = value.slice(0,-3)+(hundred?'':'.'+value.charAt(1))+sym;
};
答案 3 :(得分:0)
通过使用ES3 Number方法,如果没有定义小数位,则执行舍入。
(value / 1000).toFixed() * 1000
(value / 1000).toFixed(3) * 1000;
然而这是不正确的,因为该值将返回确切的原始数字,而不是影响该值的ceil / floor。
答案 4 :(得分:0)
所以下面的这个函数允许你把一个数字四舍五入到最接近的near,基本上你可以把一个数字四舍五入到最接近的 10 或 1000,只需通过 10,1000 附近。仅此而已。
例如,如果我想将 10 舍入到最接近的 10,它不应该像接受的答案那样返回 20,它应该返回 10。
function roundUp(number,near){
if(number%near===0) return number;
return parseInt(number / near) * near+near;
}
console.log(roundUp(110,10)) // 110
console.log(roundUp(115,10)) // 120
console.log(roundUp(115,100)) // 200