https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63812

Ian Lance Taylor <ian at airs dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #3 from Ian Lance Taylor <ian at airs dot com> ---
This kind of thing is implementation dependent.  Different implementations
handle floating point constants differently, and it can lead to this kind of
issue.  This is documented in the language spec: see the "implementation
restriction" at the bottom of this section in the spec:
http://golang.org/ref/spec#Constant_expressions .

I don't know what your original code looks like, but the simple fix for your
test case is to change

int64(2.22*1000000000000000)

(which is 2.22*1e15) to

int64(222*1e13)

(or int64(222*(1e15/100)) )

Or, for a value like this that is in range for float64, you can force the the
floating point value to be typed, and write

int64(float64(2.22*1e15))

Reply via email to