在我的程序中,有一些十进制值应该定义为相对于其范围的浮点值。
但是,在几次计算(相乘(中,范围可能大于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?
换句话说,从Float转换为Double对CPU(如realloc内存、处理精度和诸如此类的事情(来说是一项方便的工作吗?
顺便说一句,为什么苹果使用Double作为CGFloat的基本价值?Float的最大值是10^38,相对于iPhone屏幕大小来说,这是相当大的,像素不能浮动(10.111和10.11没有区别,对吧?(
这背后的原因是什么?
来自SWIFT程序设计语言
"注意
Double的精度至少为15位小数,而Float的精度可以低至6位小数。要使用的适当浮点类型取决于代码中需要使用的值的性质和范围在任何一种类型都合适的情况下,首选Double">