Javascript向下舍入整数

时间:2018-04-10 11:17:06

标签: javascript

我尝试向下舍入整数,但我似乎无法为此找到一个javascript函数。

我已经尝试过math.floor,但这并不能解决问题。这个数字必须总是向下舍入,不确定是否有这个javascript函数?

示例:

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

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

4 个答案:

答案 0 :(得分:0)

你可以减去10的余数部分并检查该值是否为零。



function down(v) {
    return v - v % 10 || v;
}


console.log(down(111));
console.log(down(30));
console.log(down(9));
console.log(down(0));




答案 1 :(得分:0)

嗯,这很奇怪,但这是我的答案。

parents

答案 2 :(得分:0)

您仍然可以使用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的数字。如果读者想要moreFloor(9) === 0,您可以省略该部分。

答案 3 :(得分:0)

你可以利用10的力量四舍五入到最近的地方。

function ceil10(n, e) {
  var m = Math.pow(10, e - 1);
  return Math.ceil(n / m) * m || n;
}

function floor10(n, e) {
  var m = Math.pow(10, e - 1);
  return Math.floor(n / m) * m || n;
}

function roundNearestLog(n) {
  var e = Math.ceil(Math.log(n + 1) / Math.LN10),
      m = Math.pow(10, e - 1);
  return Math.floor(n / m) < 5 ? floor10(n, e) : ceil10(n, e);
}

console.log('ceil   3 =', ceil10(344, 3));       // 400
console.log('ceil   2 =', ceil10(344, 2));       // 350
console.log('ceil   1 =', ceil10(344, 1));       // 344
console.log('ceil   0 =', 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 <-- What you want
console.log('floor  3 =', floor10(344, 3));      // 300
console.log('-------------');
console.log('near   3 =', roundNearestLog(3));   //   3
console.log('near  34 =', roundNearestLog(34));  //  30
console.log('near 344 =', roundNearestLog(344)); // 300
console.log('-------------');
console.log('near   6 =', roundNearestLog(6));   //   6
console.log('near  67 =', roundNearestLog(67));  //  70
console.log('near 677 =', roundNearestLog(677)); // 700
.as-console-wrapper { top: 0; max-height: 100% !important; }