在我的程序中,应根据其范围将一些十进制值定义为浮点型。
但是,在多次计算中(相乘),范围可能大于10 ^ 38,因此在计算之前,我需要将它们转换为Double。
说的是值
let a: Float // maximum: 10
let b: Float // maximum: 10^20
let c: Float // maximum: 10^30
和计算类似
func multiplyAB() -> Float {
return a * b
}
func multiplyBC() -> Double {
return Double(b) * Double(c)
}
let d = multiplyBC()
令我困扰的是哪个是性能更好的?在计算过程中从Float转换为Double或将a
,b
,c
定义为Double?
换句话说,从浮点数转换为Double是否比较方便,以便将CPU的工作(例如重新分配内存,处理精度和其他事情)与计算Double中的所有数字进行比较?
BTW,为什么苹果使用Double作为CGFloat的基础价值?Float的最大值为10 ^ 38,相对于iPhone屏幕尺寸而言,这是一个很大的值,像素不能浮动(10.111和10.11没有区别,对吗?)。其背后的原因是什么?
来自THE SWIFT PROGRAMMING LANGUAGE
“注意
Double的精度至少为15个十进制数字,而Float的精度可以低至6个十进制数字。要使用的适当浮点类型取决于您需要在代码中使用的值的性质和范围。 在任何一种类型都适合的情况下,最好使用Double。“