首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NumberFormatter并使用UInt64.max进行无签名

NumberFormatter并使用UInt64.max进行无签名
EN

Stack Overflow用户
提问于 2022-05-07 02:08:24
回答 2查看 72关注 0票数 1

我正在尝试使用UInt64.max创建一个表示NumberFormatter的字符串。下面是代码:

代码语言:javascript
复制
let formatter = NumberFormatter()
    
formatter.usesGroupingSeparator = true
formatter.numberStyle = .decimal
formatter.positiveFormat = "# ##0.#########"
formatter.maximumSignificantDigits = 20
formatter.usesSignificantDigits = false
formatter.maximumFractionDigits = 20
formatter.minimumFractionDigits = 0
formatter.alwaysShowsDecimalSeparator = false
// formatter.roundingMode = .halfUp
let text1 = formatter.string(for: NSNumber(value: Int64.max))
let text2 = formatter.string(for: NSNumber(value: UInt64.max))

print(text1)
print(text2)

其中的指纹:

任择(“9,223,372,036,854,780,000”) 任择(“-1”)

但要打印

可选(“9223372036854775807”) 任择(“18,446,744,073,709,551,615”)

看起来,NSNumber正在舍入Int64,而不是使用UIn64NSNumberFormatter的obj-c版本运行良好。

我是不是漏掉了什么,还是NumberFormatter有问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-07 11:28:24

经过修修补补,找到了一个解决办法:

代码语言:javascript
复制
let text2 = formatter.string(for: Decimal(UInt64.max))
print(text2)

这个打印Optional("18,446,744,073,709,600,000")

相关螺纹

票数 0
EN

Stack Overflow用户

发布于 2022-05-07 23:40:52

您可以使用新的格式化 Generic Instance Method并指定number样式:

iOS15+·Xcode 13

代码语言:javascript
复制
let decimal1 = Decimal(Int64.max)
let decimal2 = Decimal(UInt64.max)

let text1 = decimal1.formatted(.number)
let text2 = decimal2.formatted(.number)

print(text1)
print(text2)

这个会打印出来

9,223,372,036,854,775,807 18 446 744 073 709 551 615

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72148946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档