写点什么

一只天价股票致纳斯达克系统“崩了”!

  • 2021-05-13
  • 本文字数:1524 字

    阅读完需:约 5 分钟

一只天价股票致纳斯达克系统“崩了”!

伯克希尔 - 哈撒韦公司最近又火了一把,不是因为股神巴菲特(公司掌门人),而是其天价股票导致纳斯达克系统“崩了”。

天价股票

据美国广播公司 8 日报道,伯克希尔 - 哈撒韦 A 类股票(BRK.A)的交易价格目前已超过每股 42.1 万美元,并呈现上升趋势,5 月 7 日攀升至 43.7 万美元上方。这个消息虽然令投资者士气高涨,但是却给纳斯达克的系统带来了隐患。



由于 BRK.A 的股价过高,以至于纳斯达克的电脑系统已经无法记录这一价格。因此,纳斯达克交易所从本周二开始暂停播报 BRK.A 的价格——其网站相关页面中仅显示:“当前无可用数据”。


此外,IEX 交易所于 3 月中旬决定停止接收 BRK.A 交易单,理由是“受我方交易系统内部价格数值上限的影响,我们将拒绝一切以原有符号格式表示的交易单,直至另行通知”。看起来,他们似乎遇上了与纳斯达克一样的问题。


针对此事,有网友评论:股价太高,以至于纳斯达克的系统无法报出这个价格,不得不为这只全世界独一无二的股票升级系统... 就像当年的千年虫问题,都是因为“硬编码”。


硬编码(Hard Code 或 Hard Coding)是指在软件实现上,将输出或输入的相关参数(例如:路径、输出的形式或格式)直接以常量的方式撰写在源代码中,而非在运行期间由外界指定的设置、资源、资料或格式做出适当回应。一般被认定是种反模式或不完美的实现,因为软件受到输入资料或输出格式的改变就必须修改源代码,对客户而言,改变源代码之外的小设置也许还比较容易。

Bug 出在哪?

受到市场上涨和 2020 年疫情影响后恢复盈利的推动,沃伦·巴菲特的公司股票价格今年已经上涨了 20% 以上。但是,天价股票却让纳斯达克的交易系统撑不住了。


据了解,纳斯达克一直用一种紧凑的计算机格式记录股票价格,这种格式使用 32 位,即 1 和 0。最大的数字可能是 2 的 32 次方减去 1,即 4,294,967,295。股票价格经常使用小数点后四位来表示,所以能显示的最高价格是 429,496.7295 美元。使用占用内存较少的紧凑格式可以让软件更有效率,这在电子股票交易领域是一个高度优先事项。


没有其他股票能接近 BRK.A 的最高价格水平,所以可以理解为什么纳斯达克系统背后的工程师选择了这种数字格式,程序员称之为“四字节无符号整数”( four-byte unsigned integer )。


据 The Register 分析,纳斯达克之所以没有选择其他交易所常用的浮点数格式进行股价存储,可能是考虑到后者属于近似值,因此,他们决定将价格乘以 10000 再存储为 32 位无符号整数。


例如,这里的 123,456 代表股票价格为 12.3456 美元,可以精确至一美分的百分之一。值为 7890000 美元的股价,其实际含义则为 789.0000 美元。


顺着这个思路,可以看到伯克希尔·哈撒韦 A 类(BRK.A)单股 435120.0000 美元的价格会被存储为 4351200000,超出了 4294967295 的上限并溢出为某个远低于实际股价的值。实际上,股价经历了一番归零回绕,并最终被计为 56232704,即 5623.2704 美元。


这个价格一旦被纳斯达克公开发布,伯克希尔·哈撒韦绝对要遭受重创。换句话说,我们将能以低于 6000 美元的单股价格狂收公司股票……或者说,我们自己手里的股票也可能被他人迅猛“收割”。

应对举措

目前,纳斯达克方面表示将抢在 5 月 17 日前更新软件以纠正这一问题,并第一时间叫停了 BRK.A 异常数据的发布。


可行的解决方案包括使用 64 位无符号整数,这样可以处理最大为 18,446,744,073,709,551,615 的数值,相当于每股价格 1,844,674,407,370,955.1615 美元。目前来看,应该不会有哪支股票能涨到这样的程度。


据悉,现年 90 岁的巴菲特坚持不因股价高涨而拆分手中的 A 类股票,伯克希尔·哈撒韦如此夸张的股价也正源于此。


顺带一提,BRK 正好是 6502 CPU 汇编代码中的断点助记符,可用于对出错的程序进行故障排查……这多少有点讽刺。

2021-05-13 13:514272
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 361.7 次阅读, 收获喜欢 1802 次。

关注

评论 1 条评论

发布
用户头像
永远不要相信程序员说的够用!计算机世界类似的问题举不胜举,千年虫还记得吧?
2021-05-17 08:42
回复
没有更多了
发现更多内容

官宣定档!2025杭州安防展览会(浙江安博会)定于4月召开

AIOTE智博会

安博会 浙江安博会

Python如何用PyModbus库进行Modbus TCP通信

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

微信私域&SEO运营神器,9款RPA机器人上线

八爪鱼采集器︱RPA机器人

微信 RPA 自动化 RPAxAI

项目管理工具:哪个最适合你的团队?

爱吃小舅的鱼

项目管理

[Paper Reading]SWE-Bench: Can Language Models Resolve Real-World Github Issues?

吴京

benchmark agent LLM Coder

python多继承的3C算法是什么?怎么用?

我再BUG界嘎嘎乱杀

Python 编程 后端 多继承 3C算法

昆仑万维发布 AI 流媒体音乐平台 Melodio;Grok-2 Beta 发布,可在 X 上生成图像丨 RTE 开发者日报

声网

Magnet for mac(macOS窗口管理软件)中文免激活版

Mac相关知识分享

宝尊将于2024年8月28日发布2024年二季度及中期未经审计财务业绩

财见

Go语言中使用sqlx来操作事务

左诗右码

科大讯飞p30和x3pro选哪个好

妙龙

科大讯飞 学习机

金蝶云·苍穹追光者开发大赛,点燃高校AI应用创新之火

金蝶云·苍穹

UE虚幻云渲染未来趋势与挑战分析

3DCAT实时渲染

实时云渲染 虚幻引擎云渲染 UE云渲染

Mac思维导图软件MindNode for mac中文激活版

Mac相关知识分享

思维导图

豆瓣评分9.4!Python程序员必读的《流畅的Python》,放这里了!

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

深入探索京东JD商品详情API返回值结构

技术冰糖葫芦

API Explorer平台 API Explorer API 接口 API 测试

金融行业实时湖仓建设实践与思考

镜舟科技

大数据 数据仓库 金融 StarRocks 湖仓

关于代购系统的全面解析

Noah

抖音自动化运营神器,7款RPA机器人上线

八爪鱼采集器︱RPA机器人

RPA 自动化 抖音 RPAxAI

秒送LBS场景下的C端SOA服务容灾建设之-数据备份篇

京东科技开发者

【YashanDB知识库】YMP元数据阶段二报错YAS-04204

YashanDB

yashandb 崖山数据库 崖山DB

5大低代码开源平台案例研究

NocoBase

开源 低代码 开发平台 案例研究

交互原型设计软件中文激活版Axure RP 9 for Mac

Mac相关知识分享

面试官:JDK中都用了哪些设计模式?

王磊

Java

基于飞桨框架的稀疏计算使用指南

百度Geek说

百度飞桨

再一次对MAZDA着迷 EZ先享官见证马自达百年不变的传承

Geek_2d6073

完蛋!我被 Out of Memory 包围了!

京东科技开发者

Java表达式引擎选型调研分析

京东科技开发者

中微公司就被列入中国军事企业清单正式起诉美国国防部

新消费日报

云解析DNS是什么意思?和普通的DNS有什么区别?

国科云

完蛋!我被 Out of Memory 包围了!

京东科技开发者

一只天价股票致纳斯达克系统“崩了”!_架构_万佳_InfoQ精选文章