> On Jun 14, 2017, at 13:59, Philippe Hausler via swift-evolution > <swift-evolution@swift.org> wrote: > > > >> On Jun 14, 2017, at 1:47 PM, Dave Abrahams via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> >> on Wed Jun 14 2017, Philippe Hausler <swift-evolution@swift.org >> <mailto:swift-evolution@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> >>> <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? > > https://github.com/phausler/swift/commit/62218c85b6c494c4054ec9774dd6ce095a5d0fa4 > > <https://github.com/phausler/swift/commit/62218c85b6c494c4054ec9774dd6ce095a5d0fa4> > > So this is just an annotation of renaming to the init(truncating:)
How about cases where the value is a double that's greater than Float.greatestFiniteMagnitude? Should/Will that produce 'nil' or Float.infinity? Jordan
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution