paypalの92233720368547800番号はどこから来たのですか?[閉まっている]


36

ニュースには、Paypalアカウントに誤って92,233,720,368,547,800ドルが入金されたという話があります。

この番号はどこから来たのですか?どのようなプログラミングのバグがこの数を引き起こす可能性がありますか?


5
この質問はヘルプセンターで定義された範囲内の概念的なプログラミングの問題ではないため、トピック外としてこの質問を終了することに投票しています。

回答:


58

これは、long(64ビット符号付き整数型)の最大値です。

http://msdn.microsoft.com/en-us/library/system.int64.maxvalue.aspxから

この定数の値は9,223,372,036,854,775,807です。つまり、16進数の0x7FFFFFFFFFFFFFFFです。

これは、どの言語でも64ビットの符号付き整数型の最大値になります。paypalが.NETを使用すると想定しているわけではありません。上記のMSDNへのリンクは単なる例です。

エラーはおそらく、変換エラーが不十分であるため(10進数や浮動小数点などから正しく動作しなかったなど)、値がオーバーフローしたり、奇妙なシナリオのデフォルトコードが間違っていたり、テストであった可能性がありますエンジニアリング/ QAチームによる本番稼働中に、問題がなくなりました。メモリリーク/ポインターエラー、これを引き起こす方法のリストは本当に無数にあります。ワイヤを介してそれらに到達したいくつかの情報を逆シリアル化する解析エラーである可能性があります。


1
さらに奇妙なのは、数が明らかに最も近い100ドルに切り上げられたことです。
KutuluMike

4
質問と回答の数字が同じではないのはなぜですか?
木曜日

3
整数値はペニーのカウントであるためです。したがって、2 ^ 63-1を100で除算してドルを取得します。そして、何らかの理由で何かが最も近い100ドルに丸められました。
マークアドラー

4
@thursdaysgeekいくつかの数学は整数オーバーフローを引き起こすほど十分に間違っていたので、コードが数学を間違えている過程で、オーバーフローが発生した後もいくつかの操作を計算し続け、量がさらに変化する可能性があります。方程式が2 + 3 * 4 * 8/22 + 400 ^ 2であり、2番目のステップでオーバーフローが発生した場合、次の操作はその誤った数値に適用され続けます。
ジミーホッファ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.