Ios 用浮点数乘以UInt64
我在操场上有以下代码:Ios 用浮点数乘以UInt64,ios,macos,swift,Ios,Macos,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 我试图得到一个Int64值,它是一些Float表示秒数的纳秒数,用于dispatch\u after 我尝试过几种不同的类型铸造,但我
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
我试图得到一个Int64
值,它是一些Float
表示秒数的纳秒数,用于dispatch\u after
我尝试过几种不同的类型铸造,但我似乎找不到一种方法来获得这个结果
如有任何建议,将不胜感激
解决方案
下面答案中的解决方案(感谢@shucao)是执行以下操作:
var test3 = 1.5 * Double(test)
有趣的是,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
因此,为了在任意秒数内找到纳秒数,必须将两个值转换为
Double
s.casttest
转换为Double
var test3 = 1.5 * Double(test)
这很有效,谢谢!我用解释更新了我的帖子。不过,我希望有更好的方法来做到这一点。