2012-02-09 14 views
20

私たちのテスターの1人は、スライダーにバインドされた変数を18888888888888888に設定しました。これは通常1〜100の値しか取れません。 (私はxamlファイルに保存されているビューモデルで見ることができます。)この数字は何が特別ですか?不思議な数字188888888888888

ここにいくつかの詳細があります。アプリケーションにはスライダがあり、ビューモデルの観測可能なプロパティにバインドされています。通常、アプリケーションがワークスペースを保存すると、このビューモデルはXamlServices.Saveを使用して保存されます。私のテスト担当者は、このプロジェクトの読み込み時にスライダの値が-214と表示されるという、厄介な動作を報告しました。私は彼にファイルを送ってもらうように頼みました。保存されたxamlの値には私の不思議な数字が含まれています。

これは私のコードや他のライブラリコードのバグの結果であることが分かります。私はうまくそれを釘付けにするでしょう。しかし、通常の「ガベージ」値はこのようにはなりません。私はGoogleで、プログラミングに関連しないいくつかのページを見ています。これは何とかこの数字がインターネットの歴史のなかで生成されたことを示しています(私の猫のことではありません)。一言で言えば、最初にINT_MAX + 1を見たときのように、この数字をどのようにして作成できるのかを理解しようとしています。十分に経験があれば、それを認識できます(-2137483648誰ですか?

+1

テスターに​​質問できませんか? – balexandre

+5

@KorayBalci:あなたは再書き込みできますか?本当に決定的な答えがないので、クローズされているので、残っているのは推測だけです。 – Will

+1

@SLCとウィル、私は十分にはっきりしていないかどうかは分かりませんが、おそらくこれはバグの結果であり、おそらくオーバーフローでしょう。私はreproとデバッグしようとします。しかし、これはちょうど乱数で、1に続いて16 8であると私には言えませんか?それはバグの副作用であるはずですが、私はそれがどのように生成できるのか不思議です。ちょうどGoogleの数字だけ、いくつかの奇妙なoccurences、おそらく同様のバグ(とその著者は、おそらく問題を認識していない)の結果です。または、私は単なる馬鹿馬鹿しい数字をたどりつけて掲示していますが、これは普通の乱数ではありません。私は明確です。 – mentat

答えて

2

最初の1文字はプレースホルダーであると仮定します。これは、文字列に2文字を表示する際のエラーです。

私たちは16の8を持っています。 C#のdouble型は16バイトまでの精度を持ちます。これは、スライダーディスプレイが8888888888888888、または0x1000100010001000100010001000100010001000100010001000100010001000のタイプのガーベジダブル値を表示しようとしていることを示している可能性があります。

テスターがdoubleの値を何らかのNaN値にしている可能性があります。 (多分NaNはこのように表示されます)それは文字列の長さを明確に説明します。

また、と表示されている制限のため、の数字だけが1x8888888888888888と読み込まれている可能性があります。ゴミ入れ、ゴミ出し?

これは私の推測です。

+2

努力のおかげで、私はそれについて考えるだろう、あなたはそれを釘付けにしたかもしれない。今質問はもう一度閉じます。これらのアップアップとディスカッションの後、一部の人々が私たちと他の人のために決めたばかりです...非常に狭い状況から人々を守る役人に感謝します。 iPhoneでどのように音を出すかについて話し合ってみましょう。 – mentat