通过Float乘以UInt64

Cez*_*cik 3 macos ios swift

我在操场上有以下代码:

import Foundation

var test : UInt64 = NSEC_PER_SEC // NSEC_PER_SEC is a CUnsignedLongLong
var test2 = 2 * test // this works
var test3 = 1.5 * test // this doesn't work
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取一个Int64值,该值是使用时的某些Float秒表示的纳秒数dispatch_after.

我已经尝试了几种类型转换的变体,但我似乎无法想出一种方法来获得这个结果.

任何建议,将不胜感激!

以下答案中的解决方案(感谢@shucao)是执行以下操作:

var test3 = 1.5 * Double(test)
Run Code Online (Sandbox Code Playgroud)

有趣的是,Swift 1.5也是一个Double好主意.所以,举例来说,这并不能正常工作:

var flt : Float = 1.5
var test3 = flt * Double(test) // doesn't work
var test3 = Double(flt) * Double(test) // does work
Run Code Online (Sandbox Code Playgroud)

因此,为了在任意秒数内找到纳秒数,必须将这两个值转换为Doubles.

小智 6

铸造testDouble

var test3 = 1.5 * Double(test)
Run Code Online (Sandbox Code Playgroud)