В моей программе есть некоторые десятичные значения, которые должны быть определены с плавающей запятой относительно их диапазона.
Но в некоторых вычислениях (умножить) диапазоны могут быть больше 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 (как reallo c) память, обрабатывать точность и тому подобное) сравнивая, чтобы вычислить все числа в Double?
Кстати, почему Apple использует Double в качестве основного значения для CGFloat? Максимальное значение для Float составляет 10 ^ 38, что довольно много по отношению к iPhone размерам экрана и пикселям нельзя плавать (10.111 и 10.11 не имеют значения, верно?).
В чем причина этого?