[swift-evolution] Followup after in-the-field feedback for SE-0170
dabrahams at apple.com
Wed Jun 14 15:47:46 CDT 2017
on Wed Jun 14 2017, Philippe Hausler <swift-evolution at swift.org> wrote:
> After implementing the proposal
> we have gotten some initial feedback.
> It seems that there is definitely a fair amount of confusion and heartache for dealing with Float
> and Double values being bridged.
> Specifically the cases like:
> NSNumber(value 0.1) as? Float
> which with the current implementation will return nil since the Double value 0.1 cannot be
> represented exactly as a Float.
> It seems like the overwhelming majority of users know full well that
> Float will result in a loss of precision (hence why they chose that
> type over Double). This means that the floating point bridges for
> Double, Float, and CGFloat should not be the pedantic “exactly” cases
> but instead infer the conversion intent of a lax/approximated version.
> So in short: for the betterment of the API ergonomics, the floating
> point types as destinations will be pulled back to their initial Swift
> 3 behavior.
> Additionally to aide appropriate migration to the appropriate
> truncating/exactly initializers the un-labeled, deprecated in Swift 4,
> plain init methods to the numeric types with an NSNumber will now be
> annotated with the suggested replacements.
Sorry, I don't quite understand what that last paragraph implies. Could
you describe what will be deprecated and what will be suggested instead?
More information about the swift-evolution