在javascript上返回任意小数位的函数

时间:2014-02-08 12:38:02

标签: javascript

我想在javascript上做一些功能, 收到一些数字和位置编号n并返回其n小数位。

即,

nthdigit(3.5852,2) = 8
nthdigit(3.5852,3) = 5
nthdigit(3.5852,5) = 0
nthdigit(9.772,1) = 7

我该如何正确地做到这一点?感谢。

4 个答案:

答案 0 :(得分:3)

纯数学解决方案:

function decimaldigit(num, n) {
return Math.floor(num * Math.pow(10, n)) % 10;
}

答案 1 :(得分:0)

将数字转换为字符串,将其拆分为小数.,取出所需字符并将其转换回数字。

function nthdigit(number, i) {
    var afterDecimal = number.toString().split(".")[1];
    return parseInt(afterDecimal.charAt(i-1));
}

我之所以选择charAt(i-1)是因为字符从0开始计算,在这种情况下,如果您希望将第一个数字放入1,感觉会更自然。

答案 2 :(得分:0)

这应该很容易解决:

var nthdigit function(decimal, n)
{
    var dec = '' + decimal;                     //convert to string
    var decimalString = dec.split('.')[1];      //covert to array, take element with index [1]
    var decimalPlaces = decimalSting.split(''); //covert to array

    return parseInt(decimalPlaces( n-1 ));      //1. decimalPlace has index 0
}

答案 3 :(得分:0)

另一种纯数学解决方案,具有更高的数字精度和正负数的正确处理:

function nthdigit(num, n) {
    return n ? nthdigit((num % 1) * 10, n-1) : Math.trunc(num);
}

使用Math.trunc

if (typeof Math.trunc != "function")
    Math.trunc = function trunc(value) {
        return value === 0 ? value : !isFinite(value) ? value : value | 0;
    }