gpt4 book ai didi

swift - Swift 中的 Java BigDecimal

转载 作者:IT王子 更新时间:2023-10-29 05:49:57 28 4
gpt4 key购买 nike

我可以使用什么数据类型来解析 Java BigDecimal?在 Objective - C 中,它可以通过使用 NSDecimalNumber 来完成。我是否有 Swift 原生解决方案(不使用 NSDecimalNumber)?

最佳答案

这可能不是您想要的,正如您所说的swift-native 解决方案。但是在 Swift 3 中,一个旧的基于 C 结构的 NSDecimal 被导入为 Decimal,并且对它进行了一次大的重新安排,就像说“它几乎是 Swift -原生”。

let deca = 1.23 as Decimal //<- This actually may produce some conversion error, while `ExpressibleByFloatLiteral` uses `Double` as an intermediate value.
let decb = 0.01 as Decimal
print(deca + decb == 1.24) //->true

更新 添加了一个简单的示例,您可以在其中找到 Double(二进制浮点系统)中的计算错误。 (在 Xcode 8 beta 6 中测试。)

let dblc = 0.000001
let dbld = 100 as Double
let dble = 0.0001
print(dblc * dbld == dble) //->false (as Double cannot represent decimal fractions precisely)

let decc = Decimal(string: "0.000001")! //<- avoiding conversion error
let decd = 100 as Decimal //<- integer literal may not generate conversion error
let dece = Decimal(string: "0.0001")!
print(decc * decd == dece) //->true

关于swift - Swift 中的 Java BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39110347/

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