2017-05-03 9 views
1

私は次の関数から8進数の出力を取得しようとしています。小数点以下8桁の出力を取得する方法は?

次の関数は、入力に2を掛けて、この入力をwagerUpdate変数に更新します。私はこの出力番号を小数点以下8桁にしたいと思います。

たとえば、入力番号が0.00000001(このコードはbitcoinウェブサイト用)の場合、出力番号を0.00000002にします。何らかの理由で、出力番号が.toFixed(8)コードなしで2e-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));

^違いを見るために必要があってはならない数値に変換されています。 (+単項より高いメンバーアクセス.)のでprecedence of the operators

+(b.toFixed(8)) 

それが動作しない理由は何をやっていることと等価であるからです。 b.toFixedの文字列に変換してから、+の数値に変換してからに戻して、再び文字列に変換します。(今回は、指数表記をする数字のデフォルトのtoStringの動作となります)

+0

toFixed(8)は数値を文字列に変換します。問題は、文字列を本当に必要としていることです。数字に変換したくないのです。文字列に変換されて '.value'に代入されると、固定表記の代わりに指数表記が使用されるためです。 – Barmar

0

+wagerUpdate.toFixed(8);から+を単に削除すると良いでしょう。

+0

私はそれを変更し、すべてがうまくいきました。私はこれが本当に私を助けたので、コーディングに新しいです。ありがとうございました! – Hyperius

+0

@Hyperiusようこそ! –

関連する問題