Swift中的Java BigDecimal

我可以使用什么数据类型来解析 Java BigDecimal?在Objective-C中,可以使用NSDecimalNumber来完成.我有 Swift原生解决方案(不使用NSDecimalNumber)吗?
这可能不是你想要的,因为你说的是​​快速原生的解决方案.
但是在Swift 3中,一个旧的基于C结构的NSDecimal被导入为Decimal,并且已经对它做了一个很大的重新安排,就像说“它几乎是Swift-native”.
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

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...