計算結果が合わない理由を教えて下さい
Go言語で1000000000000000000 × 1000000000000000000
という計算をしたら結果が
-5527149226598858752
になりました。
単純に考えると1000000000000000000000000000000000000
になると思うのですがなぜでしょう。
ちなみに実行したコードは以下のものです。
package main
import "fmt"
func main() {
i := 1000000000000000000
fmt.Println(i*i)
}
Rubyで同じようにするとちゃんと1000000000000000000000000000000000000
になるのですが、言語の仕様でしょうか。
i = 1000000000000000000
p i*i