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
