我尝试向下舍入整数,但我似乎无法为此找到一个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)
答案 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; }