纳斯达克的32位代码无法处理Berkshire Hathaway的怪物股价

现在这就是我们称之为巴菲特溢出错误


一周的错误 这是一个编程的格里姆林,本周引起了我们的眼睛:股价超过了证券交易所代码的32位无符号整数限制。

Berkshire Hathaway是一个不仅仅是由亿万富翁沃伦巴菲特经营的投资组,而且因为它的Brk.a股票披露:在撰写本文时,$ 435,120.00(312,818.65英镑)。它列于纽约证券交易所,不受以下错误影响。

周二,纳斯达克交换 停止 在其网站上传输有关股票的信息以及对经纪人和其他金融组织的某些饲料。该股的网页简称:“数据目前无法使用。”纳斯达克上次出售,上次出售加上,最后销售筛选视图和基本是 暂停 for now.

这是因为BRK.A的价值当然是超过,并且最终超过,纳斯达克软件的某些部分可以安全地处理的最大值。

它拒绝纳斯达克使用32位无符号整数来记录和发送共享的报价。这种32位变量的最大值是232 - 1, or 0xffffffff in hexadecimal, or 4,294,967,295 in decimal.

纳斯达克决定不使用通常在应用中找到的浮点数格式储存价格,可能是因为它们可以 近似,然后选择将引号乘以10,000并将其存储为32位无符号整数。例如,价值123,456股将代表股票价格为12.3456美元,精确到百分之一分钱。价值7,890,000人将代表789.0000美元的股票价格。

因此,BRK.A的435,120.0000美元的价格将储存为4,351,200,000,其最高超过4,294,967,295,并将溢出到远低于实际股价的价值。实际上,该值将从最大到零包裹,实际上超过零 56,232,704,或5,623.2704美元。

如果通过纳斯达克向世界播出了错误的价格,就会有贝德林。想象一下,你可以将伯克希尔Hathaway股票搭售少于6,000美元,或者你的股票持有突然毁了?

5月4日,纳斯达克停止了BRK.A在溢出之前出现的数据,并表示它将在5月17日到位。

“通过纳斯达克上一次销售分发的交易数据消息及其迭代的最大允许值为429,496.7295美元,因为它的4字节长度,”交易所在投资者的一张笔记中表示。 “纳斯达克将通过其专有数据产品暂停上次销售信息的出版物,以便任何担保在交易会内收取98%的定价阈值,或者420,906.794年5月4日开始,以确保没有发布不正确的定价数据。”

解决方案是使用64位无符号的整数,为您提供最大值18,446,744,073,709,551,615,或股价为1,844,674,407,370,955.1615的能力。现在是大量的呼吸室。这就是纳斯达克似乎正在做的事情,它的64位 长表格价格信息 这将在本月晚些时候推出。

这位90岁的巴菲特不会让他的团队的股票贬值,这是值得的,这就是为什么它比市场上的其他任何东西都高得多。

同时,IEX交换 停了下来 在3月中旬接受Brk.a的订单“由于交易系统内的内部价格限制。在此符号中发送的任何订单将被拒绝,直到进一步通知。”对我们来说,这听起来像它遭受了与纳斯达克相同的问题。

Aptly, BRK is a 6502 CPU assembly code mnemonic for a breakpoint, which can be used to troubleshoot a program that's gone wrong. ®

编辑注意: 本文在出版后修订,包括受影响的纳斯达克服务清单。交易所的发言人告诉我们,其贸易报告设施(TRF)没有32位限制,用于大多数BRK.A交易。此外,帽子提示到华尔街日记 突出显示 这个瑕疵本周早些时候。


您可能喜欢的其他故事

咬住它的手©1998-2021