JS- toFixed returns 一个字符串,但是我需要一个数字到6位
JS- toFixed returns a string, but I need a number to 6 digits
我正在使用另一个我无法控制且看不到的代码库。我可以向它发送输入,它会 return 输出给我。这个代码库也没有具体说明它是用什么写的,但这并不重要,因为我只需要将数字传递给它,它就会返回给我输出的数字。我只知道预期的输入和输出是什么。
我必须处理的输入之一要求我提供一个精确到小数点后 6 位的输入。我的大部分数字都将远高于小数点后 6 位,因此我可以将其四舍五入或截断,但如果四舍五入或随机恰好是 0.125
或 0.5
之类的数字,我无法输入正确的号码。
例如,如果我有一个像 0.5
这样的数字,那是一个有效且合法的数字,但是我输入它的函数不会接受它并且会出错,因为它不是一个数字精确到小数点后 6 位,例如 0.500000
。我也无法输入 "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 位的数字,而不是字符串。
试试 Number( 1/2 ).toFixed(6)
,它 returns 你需要的
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;
}
<script src="https://raw.githubusercontent.com/MikeMcl/decimal.js/master/decimal.min.js">
</script>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
一个数字不包含有关有效数字的信息;值 2 与 2.0000000000000 相同。当你将四舍五入的值变成一个字符串时,你就让它显示了一定数量的数字。
一个函数需要一个 6 位小数似乎有点奇怪。
但是看看这个图书馆,它有很多适合你的东西,它可能会对你有所帮助
基本上 0.5 === 0.500000
如果你用数学思维。
console.log((1 / 2) + (1 / 1000000)); // this would print out 0.500001
toFixed() 我认为是用于显示目的。
你想达到什么目的?为什么当你需要做一些计算时不能将它用作字符串并使用 parseFloat()?
试试这个:
parseFloat(val.toFixed(6))
我正在使用另一个我无法控制且看不到的代码库。我可以向它发送输入,它会 return 输出给我。这个代码库也没有具体说明它是用什么写的,但这并不重要,因为我只需要将数字传递给它,它就会返回给我输出的数字。我只知道预期的输入和输出是什么。
我必须处理的输入之一要求我提供一个精确到小数点后 6 位的输入。我的大部分数字都将远高于小数点后 6 位,因此我可以将其四舍五入或截断,但如果四舍五入或随机恰好是 0.125
或 0.5
之类的数字,我无法输入正确的号码。
例如,如果我有一个像 0.5
这样的数字,那是一个有效且合法的数字,但是我输入它的函数不会接受它并且会出错,因为它不是一个数字精确到小数点后 6 位,例如 0.500000
。我也无法输入 "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 位的数字,而不是字符串。
试试 Number( 1/2 ).toFixed(6)
,它 returns 你需要的
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;
}
<script src="https://raw.githubusercontent.com/MikeMcl/decimal.js/master/decimal.min.js">
</script>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
一个数字不包含有关有效数字的信息;值 2 与 2.0000000000000 相同。当你将四舍五入的值变成一个字符串时,你就让它显示了一定数量的数字。
一个函数需要一个 6 位小数似乎有点奇怪。 但是看看这个图书馆,它有很多适合你的东西,它可能会对你有所帮助
基本上 0.5 === 0.500000
如果你用数学思维。
console.log((1 / 2) + (1 / 1000000)); // this would print out 0.500001
toFixed() 我认为是用于显示目的。
你想达到什么目的?为什么当你需要做一些计算时不能将它用作字符串并使用 parseFloat()?
试试这个:
parseFloat(val.toFixed(6))