如何获取数字的最后一位

41

如何使用jQuery提取数字值的最后一个(末尾)数字。因为我需要检查数字的最后一位是否为0或5。所以如何获取小数点后的最后一位数字

例如,var test = 2354.55。现在如何使用jQuery获取这个数值中的5。

我尝试过substr,但它只适用于字符串,不适用于数字格式。

如果我使用var test = "2354.55";,则可以工作,但如果我使用var test = 2354.55,则不行。


表达式 test + '' 将返回数字的字符串表示形式。 - yas
1
如果仅需要将数字四舍五入,则有更好的选择可供使用... - Rayon
8个回答

73

这对我们起作用:

var sampleNumber = 123456789,
  lastDigit = sampleNumber % 10;
console.log('The last digit of ', sampleNumber, ' is ', lastDigit);

适用于十进制数:

var sampleNumber = 12345678.89,
  lastDigit = Number.isInteger(sampleNumber) ? sampleNumber % 10
    : sampleNumber.toString().slice(-1);
console.log('The last digit of ', sampleNumber, ' is ', lastDigit);

点击“运行代码片段”以验证。


1
@Alexander 谢谢您指出这一点。您有关于如何适应小数的想法吗?请建议 - 我将更新我的答案 :) - Zameer Ansari
刚刚建议了一次编辑,也许这有点重复了,因为.slice(-1)已经适用于每个数字,但我猜当使用% 10时,这将表现得更好(可能完全错了哈哈)。不用将其转换为字符串就可以使其正常工作,但需要再思考一下 :) - Alexander

28

试试这个:

var test = 2354.55;
var lastone = +test.toString().split('').pop();

console.log("lastone-->", lastone, "<--typeof", typeof lastone);

// with es6 tagged template and es6 spread
let getLastDigit = (str, num)=>{
  return num.toString();
};
let test2 = 2354.55;
let lastone2 = +[...getLastDigit`${test2}`].pop();

console.log("lastone2-->", lastone2, "<--typeof", typeof lastone2);


ES6/ES2015 的更新:

在数字不可迭代的情况下,我们可以使用带标签的模板。因此,我们需要将数字转换为其字符串表示形式,然后展开并获取最后一个数字弹出。


如何获取最后两个数字(或x个数字) - Aero Wang
我对这种方法的效率与取模运算(通常较慢,但对于模数为10应该是逻辑上快速的)进行比较很感兴趣。 - HoldOffHunger
2
@HoldOffHunger,我也很好奇,所以我创建了一个基准测试,取模似乎是最快的。你可以自己看看:http://jsben.ch/HFS4t - DjH
这也将变量设置为字符串而不是数字。 - Patrick
这个函数如果像2.2313961097670283e+31这样,它就无法工作,应该返回7而不是1。 - Pascal Tovohery

14

你只需要将其转换为字符串

var toText = test.toString(); //convert to string
var lastChar = toText.slice(-1); //gets last character
var lastDigit = +(lastChar); //convert last character to number

console.log(lastDigit); //5

11

这里是另一个使用.slice()的示例:

var test = 2354.55;
var lastDigit = test.toString().slice(-1);
//OR
//var lastDigit = (test + '').slice(-1);

alert(lastDigit);


如果数字是123405,我们想要最后两位数字,它将返回5而不是05,因为在转换为数字时删除了0。 - Muhammad Uzair

8

只需一行代码。

const getLastDigit = num => +(num + '').slice(-1);

console.log(getLastDigit(12345)) // Expect 5


4

有一个JS函数.charAt(),你可以使用它来找到最后一个数字。

var num = 23.56
var str = num.toString();
var lastDigit = str.charAt(str.length-1);
alert(lastDigit);


4

如果你想要百分位数字,可以按照以下步骤进行:

test * 100 % 10

转换为字符串并获取最后一位数字的问题在于它不会给出整数的百位数值。

@joyBlanks 很好的问题,由于某些原因我认为这些是货币价值。如果不是,可以使用 Math.floor(test * 100 % 10) - yas
@dave:+1!你的答案甚至可以更简单。test % 10. =) - HoldOffHunger

2

toString()方法将数字转换为字符串,而charAt()方法可以给你返回特定位置的字符。

var str = 3232.43;
lastnum = str.toString().charAt( str.length - 1 );
alert( lastnum );


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接