Javascript将整数舍入

Javascript将整数舍入,javascript,Javascript,我试着把一个整数四舍五入,但我似乎找不到一个javascript函数 我试过数学。地板,但这不起作用。数字必须始终向下舍入,不确定是否有用于此的javascript函数 例如: 29 -> 20 4456 -> 4450 111 -> 110 9 -> 9//the number cant be 0 .... Math.floor(344);//returns 344 (it must be 340) 您可以减去10的余数部分,然后检查该值是否为零 功能下降(v){

我试着把一个整数四舍五入,但我似乎找不到一个javascript函数

我试过数学。地板,但这不起作用。数字必须始终向下舍入,不确定是否有用于此的javascript函数

例如:

29 -> 20
4456 -> 4450
111 -> 110
9 -> 9//the number cant be 0
....

Math.floor(344);//returns 344 (it must be 340)

您可以减去10的余数部分,然后检查该值是否为零

功能下降(v){
返回v-v%10 | | v;
}
控制台日志(向下(111));
控制台日志(下降(30));
控制台日志(向下(9));

控制台日志(向下(0))好吧,这很奇怪,但这是我的答案

function roundDown(numberToRound) {
  //Check if the number would've rounded to 0
  if (numberToRound < 10) return numberToRound;
  //Return the number minus the difference to the nearest multiple of 10
  return numberToRound - (numberToRound % 10);
}
函数取整(numberToRound){
//检查数字是否已四舍五入为0
如果(numberToRound<10)返回numberToRound;
//返回减去差值的数字,精确到10的倍数
返回numberToRound-(numberToRound%10);
}

您仍然可以使用Math.floor,只需将答案移动一个数量级:

const moreFloor = n => Math.floor (n / 10) * 10 || n;

// (or if you prefer...)
function moreFloor (n) {
    return Math.floor (n / 10) * 10 || n;
}

只是澄清一下,表达式末尾的
|n
是由于问题中的特殊要求,即不得将任何小于10的数字进行四舍五入。如果读者想要更多的楼层(9)==0,你可以省略该部分。

你可以利用10的幂来四舍五入到最近的地方

功能单元10(n,e){
var m=数学功率(10,e-1);
return Math.ceil(n/m)*m|n;
}
功能楼层10(北、东){
var m=数学功率(10,e-1);
返回数学楼层(n/m)*m|n;
}
函数roundNearestLog(n){
var e=Math.ceil(Math.log(n+1)/Math.LN10),
m=数学功率(10,e-1);
返回数学楼层(n/m)<5?楼层10(n,e):天花板10(n,e);
}
log('ceil3=',ceil10(344,3));//400
log('ceil2=',ceil10(344,2));//350
log('ceil 1=',ceil10(344,1));//344
log('ceil0=',ceil10(344,0));//344
console.log('--------------');
console.log('floor 0=',floor10(344,0));//344
console.log('floor 1=',floor10(344,1));//344

console.log('floor 2=',floor10(344,2));//340请添加更多的示例和后面的机械师。不确定您试图在这里展示什么,您的第二个和第四个示例没有任何舍入逻辑在这里似乎有点奇怪,为什么29舍入到20,但4456保持在4456?四舍五入应该遵循什么规则?四舍五入总是最接近的“某物”。通常是最接近的整数,但可以是最接近的10或最接近的0.1。你想说什么?可能是重复的权利,你认为问题出在哪里?通过返回原始值来防止
9
向下舍入。