Goで簡単な除算を実行しようとしています。
fmt.Println(3/10)
これは0.3ではなく0を出力します。これはちょっと変です。誰かがこの背後にある理由を教えてください。 Goで異なる算術演算を実行したい。
ありがとう
式3 / 10
は、型なし定数式です。仕様 定数式についてこれを言う
バイナリ演算のオペランドが異なる種類の型なし定数である場合、演算および非ブール演算の場合、結果はこのリストの後半にある種類、整数、ルーン、浮動小数点、複素数を使用します。
3
および10
は型なし整数定数であるため、式の値は型なし整数です(この場合は0
)。
オペランドの1つは、結果を浮動小数点定数にするための浮動小数点定数でなければなりません。次の式は、型なし浮動小数点定数0.3
に評価されます。
3.0 / 10.0
3.0 / 10
3 / 10.0
型付き定数を使用することもできます。次の式は、float64
定数0.3
に評価されます。
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
上記の式のいずれかを印刷すると、0.3
が印刷されます。たとえば、fmt.Println(3.0 / 10)
は0.3
を出力します。