本文介绍了Swift 3中的十进制到双精度转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将项目从 Swift 2.2 迁移到 Swift 3 ,我试图在可能的情况下摆脱旧的Cocoa数据类型。

I'm migrating a project from Swift 2.2 to Swift 3, and I'm trying to get rid of old Cocoa data types when possible.

我的问题在于:将 NSDecimalNumber 迁移到十进制

My problem is here: migrating NSDecimalNumber to Decimal.

我曾经在 NSDecimalNumber 桥接到 Double 两种方式> Swift 2.2 :

I used to bridge NSDecimalNumber to Double both ways in Swift 2.2:

let double = 3.14
let decimalNumber = NSDecimalNumber(value: double)

let doubleFromDecimal = decimalNumber.doubleValue

现在,切换到 Swift 3

let double = 3.14
let decimal = Decimal(double)

let doubleFromDecimal = ???

decimal.doubleValue 不存在,也不存在 Double(十进制),甚至十进制为Double ...
我想出的唯一的黑客攻击是:

decimal.doubleValue does not exist, nor Double(decimal), not even decimal as Double...The only hack I come up with is:

let doubleFromDecimal = (decimal as NSDecimalNumber).doubleValue

但是试图摆脱 NSDecimalNumber 是完全愚蠢的,并且必须在虽然...

But that would be completely stupid to try to get rid of NSDecimalNumber, and have to use it once in a while...

嗯,要么我错过了一些显而易见的事情,请原谅浪费你的时间,或者我认为需要解决一个漏洞。 ..

Well, either I missed something obvious, and I beg your pardon for wasting your time, or there's a loophole needed to be addressed, in my opinion...

预先感谢您的帮助。

编辑:没有更多关于 Swift 4 的主题。

Edit : Nothing more on the subject on Swift 4.

推荐答案

在Swift 3中有效的另一个解决方案是投射十进制 NSNumber 并从中创建 Double 。 / p>

Another solution that works in Swift 3 is to cast the Decimal to NSNumber and create the Double from that.

let someDouble = Double(someDecimal as NSNumber)

这篇关于Swift 3中的十进制到双精度转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 08:40