QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 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:514306
用户头像
万佳 前InfoQ编辑

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

关注

评论 1 条评论

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

OpenHarmony napi开发-公开课

Laval小助手

低代码技术与仓储管理的新纪元:革命性的供应链变革

天津汇柏科技有限公司

低代码 仓储系统

DBAIOps生态概述

DBAIops社区

数据库 运维

阿里巴巴1688商品API实战:批量抓取价格、标题、图片及库存数据

技术冰糖葫芦

api 货币化 API 接口 pinduoduo API

mac电脑如何使用Linux系统?PD虚拟机安装Linux系统详细教程

Rose

Linux系统 mac电脑 pd虚拟机 19

Datax助力轻松迁移SQLServer数据至GreatSQL

GreatSQL

最新版Spring Security 中的路径匹配方案!

江南一点雨

Java spring security

国密数据加密在堡垒机上的应用有哪些?

行云管家

信息安全 数据加密 堡垒机 国密

手把手教你实现 OceanBase 数据到 Apache Doris 的便捷迁移|实用指南

SelectDB

数据库 大数据 数据分析 数据同步 数据迁移

根据Nginx Ingress指标对指定后端进行HPA

华为云开发者联盟

nginx 开发 华为云 华为云开发者联盟 企业号2024年4月PK榜

轻松复现一张AI图片

程序那些事

人工智能 程序那些事 4月月更 openai

CorelDRAW 2024(cdr2024注册机)最新图文安装教程

Rose

CorelDRAW2024下载 CorelDRAW破解补丁 CorelDRAW中文版安装 cdr2024安装教程

ChatGPT助力测试领域!探索人工智能编写测试用例的新前景

测试人

软件测试

利用飞桨与文心大模型重塑大宗商品数字供应链

百度开发者中心

深度学习 大模型

通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验

阿里云云效

阿里云 云原生 通义灵码

入职3年-我如何做一名AI产品经理

京东科技开发者

京东广告研发——AIGC在京东广告创意的技术应用

京东科技开发者

Monibuca v5 实现零拷贝 BufReader

不卡科技

Go 性能优化 流媒体

体验稳定强大的数据处理神器——Microsoft Excel LTSC 2021

Rose

Excel 数据分析 Excel 2021破解版 Excel 2021永久版 Excel 许可证

实战剖析-vue项目首屏加载时长优化

京东科技开发者

库洛游戏宣布《战双帕弥什》将启动鸿蒙原生应用开发

最新动态

实践展示openEuler部署Kubernetes 1.29.4版本集群

华为云开发者联盟

Kubernetes 华为云 集群 华为云开发者联盟 企业号2024年4月PK榜

PIRF-395

Echo!!!

English

通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验

阿里巴巴云原生

阿里云 云原生 函数计算 通义灵码

ChatGPT助力测试领域!探索人工智能编写测试用例的新前景

测吧(北京)科技有限公司

测试

文心大模型“你说我画”:PaddleHub与PaddleSpeech的协同实践

百度开发者中心

人工智能 NLP 大模型 大模型

DBAIOps关键SQL监控功能

DBAIops社区

数据库 运维 监控

如何基于Django中的WebSockets和异步视图来实现实时通信功能

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号2024年4月PK榜

macos big sur 软件icons图标大全(新增至2719枚大苏尔风格图标)

Rose

icons图标大全 macos big sur 软件

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