2016-05-12 92 views
-2

所以我有一个数字,如5467.我希望我的代码返回546如何返回排除最后一位数字的号码?

我试图采取的最后一个数字,并从原来的数减去它,但我得到5460,而不是546

+0

将其转换为字符串并执行子字符串。 :) –

回答

1

听起来像你还需要分我10.你可以做这样的事情:

var number = 5467; 
number = number - (number % 10); // This will subtract off the last digit. 
number = number/10; 
console.log(number); // 546 

我们首先使用模运算符%拿到最后一个数字,我们从number减去它。这减少了从5467到5460.数我们砍掉最后一位(这是保证是0),我们除以10,并获得546

写更简洁,你可以这样做:

number = (number - (number % 10))/10; 
+0

它现在的作品,现在我想重复这个过程,直到我的答案是少于30岁。我如何做一个while循环 – Mike

+0

只要'while(number> = 30){number =(number - (number%10) )/ 10; }' – winhowes

2

结合/%

(5467 - (5467 % 10))/10 
1

有几件事情你可以做最简洁的幸福:

Math.floor(num/10); 

或者,转换为字符串,删除最后一个字符转换回数字。

parseInt(num.toString().slice(0, -1)); 
+0

第一个可以简化为'num/10 | 0',它可以处理字符串和数字。 – RobG

+0

也''(num/10);':) – Damon

+0

但是,这是另外两个字符!你会杀死互联网! ;-) – RobG

0

我不介意一些其他的答案,但我觉得这可能太固定了它是一个数字。

这是什么,但你想删除最后一位数字/字符,不管数字,为什么不是substr?

http://www.w3schools.com/jsref/jsref_substr.asp

var s = 5467; 
s = s.toString().substr(0, s.toString().length - 1); 
console.log(s) 

或更容易:

var s = (5467).toString(); 
s = s.substr(0, s.length - 1); 
console.log(s) 

这些不考虑到个位数的,所以在经过1将返回空白。为了回答这个问题,你可以简单地做这样的检查:

var s = (1).toString(); 
if(s.length > 1) 
    s = s.substr(0, s.length - 1); 
console.log(s) 

此外,类似问题:

Remove last digits from an int

Remove the last digits of a number (not string)

Removing the last digits in string

+0

请不要参考w3schools,那里的信息一般都很差。使用ECMA-262或MDN。 – RobG

2

如果字符串表示将为好你接着另一种方式是

var num = 5467, 
    cut = (num/10).toFixed(); // <-'547' 

呃...警告..!如有必要,我必须说toFixed()方法轮。所以在这个特定的例子中它不起作用。

0

要截断从右手侧的数字,直到数量小于30,保持10分和向下取整,直到达到合适的值:

var n = 12341235; 
 

 
while (n > 30) n = n/10|0; 
 

 
document.write(n);

的大于并且划分操作将强制n为一个数字,所以它可以是数字或字符串。如果ToNumber(n)结果的NaN(例如n = 'foo'),那么Ñ值不被修改。

0

你可以简单地除以10的数量和parseInt()

var num = 5467; 
num = parseInt(num/10); 

更新:

,直到答案是小于30重复这一过程,使用while环路

var num = 5467; 
 

 
while(num >= 30) { 
 
    num = parseInt(num/10); 
 
} 
 

 
document.write(num);

相关问题