例如,
var myNum = 1.208452
我需要在小数点后得到myNum的最后一位数,所以它是(2)
答案 0 :(得分:5)
您可以尝试以下方式:
var temp = myNum.toString();
var lastNum = parseInt(temp[temp.length - 1]); // it's 2
修改强>
您可能想检查您的号码是否是实际小数,您可以这样做:
var temp = myNum.toString();
if(/\d+(\.\d+)?/.test(temp)) {
var lastNum = parseInt(temp[temp.length - 1]);
// do the rest
}
答案 1 :(得分:2)
这种方法:
var regexp = /\..*(\d)$/;
var matches = "123.456".match(reg);
if (!matches) { alert ("no decimal point or following digits"); }
else alert(matches[1]);
这是如何运作的:
\. : matches decimal point
.* : matches anything following decimal point
(\d) : matches digit, and captures it
$ : matches end of string
答案 2 :(得分:2)
正如评论中指出的那样,我最初误解了你的问题,并认为你想要小数点后的第一个数字,这就是这个单行所做的:
result = Math.floor((myNum - Math.floor(myNum)) * 10);
如果你想要一个纯粹的数学解决方案,它给你小数位后的最后一位数字,你可以转换数字,直到最后一位数字是小数位后面的第一位数,然后使用上面的代码,就像这样(但它不是更长的一个漂亮的单线):
temp = myNum;
while( Math.floor(temp) != temp ) temp *= 10;
temp /= 10;
result = Math.floor((temp- Math.floor(temp)) * 10);
工作原理:
上面的代码将temp乘以10,直到小数点后面没有任何内容,然后除以10得到一个小数位后只有一位数的数字,然后使用我的原始代码给出小数点后的第一个数字地点!呼!
答案 3 :(得分:-2)
只是做:
function lastdigit(a)
{
return a % 10;
}