2017-05-03 30 views
1

我想從下面的函數獲得8位十進制輸出。如何獲得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

你爲什麼要做'+ wagerUpdate'?由於你乘以一個數字,它已經是一個數字。刪除,你的'toFixed'應該工作。 –

+0

@MattBurland發佈那個答案。 – Barmar

+0

我已經更新了先前提出的問題。已刪除+。 –

回答

-3

相反的:

document.getElementById("wagerInputBox").value = +wagerUpdate.toFixed(8); 

嘗試:當你設置值

document.getElementById("wagerInputBox").innerHTML = +wagerUpdate.toFixed(8); 

爲什麼我這麼說就是可能是,瀏覽器嘗試轉換爲最好的結果。但是,內部HTML應該採取相當於字符串!

+1

如果'wagerInputBox'是一個'',它沒有'innerHTML',只有'value'。 – Barmar

+0

哦,是的!我沒有考慮到這一點。我的錯。 可能是Matt指出的'+'符號原因問題 – praty

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)) 
因爲 precedence of the operators

(成員訪問.比一元+更高)。您將b轉換爲.toFixed的字符串,然後將其轉換回+的數字,然後將其再次轉換回字符串!(這次用默認的toString行爲爲數字給你指數表示法)

+0

'toFixed(8)'將它從一個數字轉換爲一個字符串。問題是他真的需要字符串,他不想將其轉換回數字,因爲當它轉換回字符串以分配給'.value'時,它將使用指數表示法而不是固定表示法。 – Barmar

0

只需從+wagerUpdate.toFixed(8);刪除+,你會很好。

+0

太棒了。我改變了它,現在一切正常。我對編碼很陌生,所以這真的幫助了我。謝謝! – Hyperius

+0

@Hyperius歡迎您! –

相關問題