gpt4 book ai didi

swift - 为什么 NumberFormatter 在 Swift 中将 19,999,999,999,999,999 格式化为 20,000,000,000,000,000?

转载 作者:行者123 更新时间:2023-12-05 05:31:33 25 4
gpt4 key购买 nike

我需要在 Swift 中每隔 3 位用逗号分隔 Int 值。
我已尝试使用 NumberFormatter 执行此操作,但它有时会返回带有大数字的意外结果。
这是为什么?

import Foundation

func format(_ num: Int) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.groupingSeparator = ","
formatter.groupingSize = 3
return formatter.string(from: NSNumber(value: num)) ?? String(num)
}

let num1 = 199_999_999_999_999
let num2 = 1_999_999_999_999_999
let num3 = 19_999_999_999_999_999
let num4 = 199_999_999_999_999_999
let num5 = 1_999_999_999_999_999_999

print(format(num1))
print(format(num2))
print(format(num3))
print(format(num4))
print(format(num5))

// 199,999,999,999,999
// 1,999,999,999,999,999
// 20,000,000,000,000,000 <- unexpected results
// 199,999,999,999,999,999
// 1,999,999,999,999,999,999

最佳答案

这是 NumberFormatter 中的一个错误。 (有很多。)请尝试打印 Decimal(19_999_999_999_999_999).formatted()

关于swift - 为什么 NumberFormatter 在 Swift 中将 19,999,999,999,999,999 格式化为 20,000,000,000,000,000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74338907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com