You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS16.7/macOS13.6中UInt64.max格式化结果错误问题问询

UInt64/UInt最大值格式化的系统版本差异问题解答

问题现象

  • iOS 16.7、macOS 13.6环境下:
    • UInt64.max.formatted(.number) 与 UInt.max.formatted(.number) 返回错误结果:实际输出9,223,372,036,854,775,807(即263-1),而非预期的`18,446,744,073,709,551,615`(264-1)
    • 使用NumberFormatter#string(from:)处理该最大值时,返回结果为-1
  • iOS 17.0.1、macOS 14.0环境下:
    • 两种格式化方式均返回正确结果:.formatted(.number)输出带千分位的正确最大值,NumberFormatter输出纯数字格式的正确最大值18446744073709551615

结论

这是iOS 16、macOS 13中Foundation.framework的Bug,并非你的代码存在问题。

问题根源

旧版本Foundation的格式化逻辑对无符号64位整数的处理存在符号溢出错误:将UInt64.max(无符号64位最大值)错误识别为有符号64位整数的最小值(对应十进制-1),后续格式化流程又错误转换为有符号64位整数的最大值9,223,372,036,854,775,807。虽然iOS 17官方发布说明未提及该修复,但新版本的正确行为已确认苹果修复了此底层逻辑漏洞。

内容的提问来源于stack exchange,提问作者mtgto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:50:09