In SE-0170, it states: "It is worth noting that `is` should follow the same logic as `as?`." For clarity, does rolling back to the initial Swift 3 behavior mean that `NSNumber(value: 0.1) is Float == true`?
On Wed, Jun 14, 2017 at 3:13 PM, Philippe Hausler via swift-evolution < [email protected]> wrote: > After implementing the proposal 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. > > 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. > > Thanks for your time and feedback, > Philippe Hausler > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution > >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
