2012-04-25 2 views
1

私はこのスニペットを持っているとしましょう。これは浮動小数点丸めの不正確さのb/cを処理しないのですか?

var age = prompt('what is your age?'); 

if (age === 30) 
{ 
alert('your age is 30'); 
} 

プロンプトで30を入力した場合、if文はトリガーされません。私はそれが浮動小数点の丸め誤差と関係があると思うが、確かに本当に知っていない。これについてあなたの考えを聞くことは素晴らしいことでしょう。

答えて

11

window.prompt()は文字列を返します。文字列は数字と同一ではありません。 this answerを参照して、明示的な変換に注意事項について

if (age === '30') 
if (+age === 30) // Explicit type conversion 
if (age == 30) // Implicit type conversion 

:以下のいずれかを使用します。たとえば、00030の入力も有効です。

+1

OPは実際には何を意味するのか理解できないかもしれません - それも含めてほしいかもしれません – JRaymond

+0

@JRaymondそうなら、このQ&Aを参照してください:http://stackoverflow.com/questions/359494/ javacript-vs-does-it-matter-which-equal-operator-i-use –

+0

主な問題は、文字列と数値型と混同していると思います。おそらく私はプロンプトで型を変換する必要があります。 – stanigator

関連する問題