implicit int to double is really, really bad! it can silently truncate - double can only store 53 bits integers so for large integers the result will not be an integer!
in general, lossy conversions should never, ever be implicit
in general, lossy conversions should never, ever be implicit