我试图从以下函数获得8位十进制输出。
以下函数将输入乘以2,然后使用wagerUpdate变量更新此输入。我希望这个输出的数字有8位小数。
例如:如果输入数字是0.00000001(此代码用于比特币网站),那么我希望输出数字为0.00000002。由于某种原因,下面的代码不能正常工作,因为输出数字的格式为2e-8,而没有.toFixed(8)代码。如果你能,请帮忙。非常感谢你。
<script>
function MultiplyWagerFunction() {
var wager = document.getElementById("wagerInputBox").value;
var wagerUpdate = wager*2;
document.getElementById("wagerInputBox").value = +wagerUpdate.toFixed(8);
}
</script>
答案 0 :(得分:1)
如果您在+
之前移除wagerUpdate.toFixed(8)
,它应该可以正常工作。当wagerUpdate
乘以2
时,+
已被转换为数字,因此不需要一元var a = "0.00000001";
var b = a*2;
console.log(b.toFixed(8));
console.log(+b.toFixed(8));
+(b.toFixed(8))
&#13;
^看到差异。
它不起作用的原因是因为你所做的相当于:
.
因为precedence of the operators(成员访问+
高于一元b
)。您正在将.toFixed
转换为包含+
的字符串,然后将其转换回toString
的数字,然后再将转换回字符串!(此使用指数表示法的数字的默认msg
行为的时间)
答案 1 :(得分:0)
只需从+wagerUpdate.toFixed(8);
中删除+就可以了。
答案 2 :(得分:-3)
而不是:
document.getElementById("wagerInputBox").value = +wagerUpdate.toFixed(8);
尝试:
document.getElementById("wagerInputBox").innerHTML = +wagerUpdate.toFixed(8);
为什么我这样说可能是在您设置值时,浏览器会尝试转换为最佳结果。但是,内部HTML应该采用等效的字符串!