[swift-evolution] Followup after in-the-field feedback for SE-0170

Dave Abrahams 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
> https://github.com/apple/swift-evolution/blob/master/proposals/0170-nsnumber_bridge.md
> <https://github.com/apple/swift-evolution/blob/master/proposals/0170-nsnumber_bridge.md>
> 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.

+1

> 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?

-- 
-Dave



More information about the swift-evolution mailing list