Let's be clear: it _is_ rounded, just toward zero. It is consistent with
the behavior of integer division. I would guess that your students also
repeatedly struggle with the result that `2 / 3 == 0`? If so, they have not
been taught some important fundamentals of integer arithmetic. If not, then
it should be natural that `Int(2 / 3 as Double == Int(2 / 3 as UInt)`.
On Mon, May 22, 2017 at 08:06 Rudolf Adamkovič <[email protected]> wrote:

>
> > On 22 May 2017, at 14:18, Xiaodi Wu <[email protected]> wrote:
> >
> > What are the "subtle bugs all over the place" that you observe, and what
> did those users expect to happen?
>
> They pretty much universally expect the value to be rounded. When this
> happens, I tell them about this language called C (… insert long story here
> ...) and we replace "Int(foo)" with "foo.rounded()”. We write a unit test
> and move on. So far, so good. However, two weeks later, they do it again.
> And again. If the initializer said “truncating” or something along those
> lines, I’m sure they wouldn’t pick that one. They are all smart people,
> it’s just that there’s absolutely no “visible clue” and they don’t expect
> this to be the default behavior.
>
> P.S. I haven’t followed the “integer protocols” debate and had no idea
> that “this issue is settled” and that it "cannot go back”. Also, I have no
> time nor interest to "bikeshed endlessly”. I just wanted to share
> real-world experience/observation with smart people in here (like you) to
> improve the language going forward.
>
> Thank you!
>
> R+
>
>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to