JS- toFixed返回一个字符串,但我需要一个数字到6位

时间:2017-08-28 11:32:11

标签: javascript decimal precision tofixed

我正在使用另一个我无法控制的代码库,而我无法看到。我可以发送输入,它会将输出返回给我。这个代码库也没有指定它所写的内容,但这并不重要,因为我只需要传递它的数字,它就会把它还给它我输出的数字。我只知道预期的输入和输出是什么。

我必须使用的输入之一要求我提供一个长度恰好小数点后6位的输入。我的大多数数字都会远远超过6位小数,所以我可以将它舍入或截断,但如果它舍入到或随机恰好是0.1250.5之类的数字,我无法输入正确的号码。

例如,如果我有一个像0.5这样的数字,这是一个有效且合法的数字,但我输入它的功能将不接受它并且会因为它不是一个数字而错像0.500000这样的6个小数位。我也无法输入"0.500000"的字符串,因为它也会错误,因为它正在查找数字,而不是字符串。

在本机JavaScript中是否仍然保持数字的特定精度,即使它的末尾有额外的死零值?

示例:

(1/2).toFixed(6) === "0.500000" // the toFixed() function returns a *String*, not a *Number*.

(1/2).toFixed(6) /1 === 0.5 // dividing by 1 coerces it to a Number, but drops the decimals back off the end.

Number( (1/2).toFixed(6) ) === 0.5 // Trying to convert it into a Number using the Number Constructor does the same as  the example above it.

*编辑:要清楚,我需要一个数字到小数点后6位,而不是字符串。

4 个答案:

答案 0 :(得分:0)

尝试Number( 1/2 ).toFixed(6),它会返回您需要的内容

答案 1 :(得分:0)



function myFunction() {

        var a = (1/2).toFixed(6) + "<br>";
        var b = parseFloat(a).toFixed(6) + "<br>";
       
        var x = new Decimal(123.4567) + "<br>";
         var n = a + b + c;
        document.getElementById("demo").innerHTML = n;
    }
&#13;
<script src="https://raw.githubusercontent.com/MikeMcl/decimal.js/master/decimal.min.js">
</script>

<button onclick="myFunction()">Try it</button>

    <p id="demo"></p>
&#13;
&#13;
&#13;

数字不包含有效数字的信息;值2与2.0000000000000相同。将舍入值转换为字符串时,它会使其显示一定数量的数字。

函数需要一个6位十进制数似乎有点奇怪。 但看看这个库它有很多东西给你,它可能会帮助你

Decimal

答案 2 :(得分:0)

如果您以数学方式思考,基本上0.5 === 0.500000

console.log((1 / 2) + (1 / 1000000)); // this would print out 0.500001 
我认为

toFixed()用于显示目的。

你想要达到什么目的?为什么不能使用它作为字符串并在需要进行一些计算时使用parseFloat()?

答案 3 :(得分:0)

尝试一下:

parseFloat(val.toFixed(6))