Those cases will produce `nil`. "Should" is a matter of expectation, but
I think that it’s reasonable behavior since it feels truer to the
intent the `exactly:` methods.
On 16 Jun 2017, at 16:23, Jordan Rose via swift-evolution wrote:
> On Jun 14, 2017, at 13:59, Philippe Hausler via swift-evolution
<[email protected]> wrote:
On Jun 14, 2017, at 1:47 PM, Dave Abrahams via swift-evolution
<[email protected] <mailto:[email protected]>>
wrote:
on Wed Jun 14 2017, Philippe Hausler <[email protected]
<mailto:[email protected]>> 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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution