SWIFT/IOS Implementing some arithmetic on share prices, doing a subtraction to arrive at a daily loss/gain figure.
When using the default Float type, I get inaccurate results (see playground code) below.
import UIKit var str = "Hello, playground" let y: Float = 129.08 let t: Float = 130.29 let subtracted = t - y // results in 1.209991 !!!!!! not accurate, should be something like 1.209998 let returnVal = subtracted / y // Results in 0.009373966 also inaccurate
If I implement the same arithmetic in a spreadsheet I get the expected results (or near as dammit): 130.08 - 129.08 = 1.20999999999998.
Am I making some fundamental error? And one have experience of this? How can I get the same results as the spreadsheet (against which I am validating my calculations).
OK so I updated to include a conversions from Float to Double as suggested in the replies and look at the result! The Double(float_value) conversion seems to add garbage in the lower significance digits of the result.
import UIKit var str = "Hello, playground" let y_float: Float = 129.08 let t_float : Float = 130.29 let y: Double = Double(y_float) // results in 129.0800018310547 !!! let t: Double = Double(t_float) // results in 130.2899932861328 let subtracted : Double = t - y let returnVal = subtracted / y
So now the question is, any way to make a clean conversion from Float to Double?