似乎无法找到这个问题的好答案。如何从int中删除最后11位数?
id可以是开头的一个或多个数字,但ID后面总是有11个数字。一开始会有一个id。 {id}{11 digits}
。
var getId = function (digits) {
// Do some stuff and return id
}
getId(110000000001); // Should return 1
getId(1110000000001); // Should return 11
getId(2010000000001); // Should return 20
答案 0 :(得分:10)
除以1e11
并发言:
var stripped = Math.floor(id / 1e11);
这可以避免转换为字符串表示形式。
请注意,JavaScript数字的性质使得您的“原始”值(值 11个无用的数字)除了11之前的数字之外不能超过5位数我将开始遇到精确问题。我想如果你从不关心可能不是问题的低阶11位数。
答案 1 :(得分:4)
答案 2 :(得分:3)
您可以将您的号码转换为字符串并删除拖尾数字:
digits.toString().replace(/\d{11}$/, '')
顺便说一句,你最好不要使用整数(或准确地说,数字),因为如果数字大于2147483648(绝对值),它将在内部表示为double
,从而导致精度失利。如果不需要拖尾数字,那就没关系 - 在其他答案中建议使用除法(由于科学记法,这可能会破坏)。但是如果你想保留所有数据,你应该用字符串表示你的数字。
答案 3 :(得分:2)
您可以使用除法和10 ^ 11来执行此操作。 编辑:我的不好
答案 4 :(得分:1)
var getId = function (digits) {
var id = parseInt((digits/(1e11)),0);
}
答案 5 :(得分:1)
您可以将数字转换为字符串并从末尾切割最后11个字符
parseInt( digits.toString().slice(0, -11) );
使用.slice( 0 , [ negative_number ]);
会从字符串末尾切换x
个字符
有关.slice()
Here