我想通过将第二个数字之后的所有数字交换为零来“舍入”一个整数。此外,如果数字只有1位数字,则什么也不做;如果数字只有2位数字,则将第二位数字交换为0。
示例:
3 => 3
22 => 20
754 => 750
8912 => 8900
是否可以在不将数字截断为字符串然后用零重新构建数字的情况下实现?
答案 0 :(得分:3)
您不需要将数字截断为字符串,可以通过数学计算轻松实现。另外,将数字更改为字符串然后执行任何操作将增加这种情况下的不必要开销。
请参阅下面的代码,这很简单。 希望这会有所帮助。
db.customers.Where(p => p.name.Contains(name) || p.number.Contains(name)
|| p.email.Contains(name) || p.gender.Contains(name)).ToList();
答案 1 :(得分:1)
这将适用于所有以10为底的数字。
所有都是关于一个简单的数学运算的:number - [rest of (number / base-10 of number)]
function round(n) {
if(n < 10) return n;
var d = getTenBase(n.toString().length - 1);
return n - (n % (10 * d));
}
function getTenBase(l) {
var d = 1;
for(var i = 2; i < l; i++) {
d *= 10;
}
return d;
}
console.log(round(3));
console.log(round(22));
console.log(round(768));
console.log(round(1657));
答案 2 :(得分:0)
您可以找到长度,然后找到前两个字符,然后将其取为零(有效长度)并同时连接
var str ='8912'; var n = str.length;
if(n == 1) {
print(str);
} else if(n == 2){
var strFirst = str.substring(0,1);
var str2 = '0';
var res = strFirst.concat(str2);
}否则if(n> 2){
var strFirst = str.substring(0,2);
var i;
var strsec ='0';
for (i = 0; i < n-3; i++) {
strsec += 0 ;
}
var res = strFirst.concat(strsec);
} 打印(res);