我正在嘗試創建一個表示UInt64.maxusing的字串NumberFormatter。這是代碼:
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,沒有采用UIn64. obj-c 版本的NSNumberFormatter作業正常。
我錯過了什么還是有問題NumberFormatter?
uj5u.com熱心網友回復:
經過一番折騰,找到了解決辦法:
let text2 = formatter.string(for: Decimal(UInt64.max))
print(text2)
這列印Optional("18,446,744,073,709,600,000")
相關執行緒
uj5u.com熱心網友回復:
您可以使用新格式 Generic Instance Method并指定number樣式:
iOS15 ? Xcode 13
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471665.html
