贝宝(Paypal)的92233720368547800数字从何而来?[关闭]


36

新闻中一个故事报道说,一个人的Paypal帐户被意外记入了92,233,720,368,547,800美元。

这个数字从哪里来?什么样的编程错误可能会导致这个数字?


5
我投票关闭此问题为离题,因为这不是帮助中心所定义范围内的概念性编程问题。

Answers:


58

它是long(64位有符号整数类型)的最大值。

来自http://msdn.microsoft.com/zh-cn/library/system.int64.maxvalue.aspx

该常数的值为9,223,372,036,854,775,807;即十六进制0x7FFFFFFFFFFFFFFFFF。

这将是任何语言中64位带符号整数类型的最大值,我不假设Paypal使用.NET,到以上MSDN的链接仅是说明性的。

该错误很可能只是一个很差的转换错误(例如,从十进制,浮点数等到长时间无法正常工作的错误),导致值溢出或某些奇怪情况下的默认代码错误,或者它可能是测试结果他们的工程/质量检查小组在生产中投入了大量精力。内存泄漏/指针错误,导致这种情况的方法列表确实数不胜数。可能是解析错误,反过来使通过网络传给他们的一些信息反序列化,这是无数最终导致意外或未对齐的整数值的大量方法。


1
更奇怪的是,这个数字显然被四舍五入到最接近的$ 100美元。
KutuluMike 2013年

4
为什么问与答中的数字不同?
2013年

3
因为整数值是几美分。因此,您将2 ^ 63-1除以100得到美元。然后由于某种原因四舍五入到最接近的100美元。
Mark Adler

4
@thursdaysgeek某些数学运算出错到足以引起整数溢出的可能性,代码出错时可能会在数学运算出错的情况下继续计算某些运算,从而导致数值变化更大。好像方程式是2 + 3 * 4 * 8/22 + 400 ^ 2,并且在第二步发生溢出,以下运算将继续应用于该错误的数字。
Jimmy Hoffa 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.