<div dir="ltr">On Tue, May 23, 2017 at 1:16 PM, Guillaume Lessard via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">I completely agree with Haravikk. This is not C, we have type inference, and this behaviour is different from other non-failable lossy conversions in Swift.<br>
<br>
Regarding uses of ‘truncating’, Xiaodi is wrong. The documentation of BinaryInteger.init&lt;T: FloatingPoint&gt;(_ source: T) in the accepted proposal specifically uses the term in the way the original poster used it:<br>
  /// Creates an integer from the given floating-point value, truncating any<br>
  /// fractional part.<br>
(<a href="https://github.com/apple/swift-evolution/blame/master/proposals/0104-improved-integers.md#L444" rel="noreferrer" target="_blank">https://github.com/apple/swif<wbr>t-evolution/blame/master/propo<wbr>sals/0104-improved-integers.<wbr>md#L444</a>)<br></blockquote><div><br></div><div>The doc comments in the proposal text were meant as explanation for readers of the proposal; they undergo editing for accuracy during implementation. That wording is, notably, not found in the implemented protocol. Instead:</div><div><br></div><div>```</div><div><div>/// When you create a binary integer from a floating-point value using the</div><div>/// default initializer, the value is rounded toward zero before the range is</div><div>/// checked. In the following example, the value `127.75` is rounded to `127`,</div><div>/// which is representable by the `Int8` type.  `128.25` is rounded to `128`,</div><div>/// which is not representable as an `Int8` instance, triggering a runtime</div><div>/// error.</div></div><div>```</div><div><br></div><div><div><a href="https://github.com/apple/swift/blob/4ec2838e8ded1284a7502967a8b3720ae64da565/stdlib/public/core/Integers.swift.gyb#L1216" target="_blank">https://github.com/apple/<wbr>swift/blob/<wbr>4ec2838e8ded1284a7502967a8b372<wbr>0ae64da565/stdlib/public/core/<wbr>Integers.swift.gyb#L1216</a><br></div></div><div><br></div><div><br></div><div>This wording is also reflected in the pre-SE-0104-take-2 documentation for the concrete implementation on the type itself, showing that it is a longstanding convention:</div><div><br></div><div><div>&gt; `init(_:)`</div><div>&gt; Creates a new instance by rounding the given floating-point value toward zero.</div></div><div><br></div><div><a href="https://developer.apple.com/reference/swift/int/1538869-init" target="_blank">https://developer.apple.com/<wbr>reference/swift/int/1538869-<wbr>init</a></div><div><br></div><div><br></div></div></div></div>