Go'da basit bir bölme yapmaya çalışıyorum.
fmt.Println(3/10)
Bu, 0.3 yerine 0 yazdırır. Bu biraz tuhaf. Lütfen birisi bunun arkasındaki sebebi paylaşabilir mi? Go'da farklı aritmetik işlemler yapmak istiyorum.
Teşekkürler
Go'da basit bir bölme yapmaya çalışıyorum.
fmt.Println(3/10)
Bu, 0.3 yerine 0 yazdırır. Bu biraz tuhaf. Lütfen birisi bunun arkasındaki sebebi paylaşabilir mi? Go'da farklı aritmetik işlemler yapmak istiyorum.
Teşekkürler
Yanıtlar:
İfade 3 / 10
, türlenmemiş sabit bir ifadedir. Spesifikasyon bunu sabit ifadeler hakkında söylüyor
bir ikili işlemin işlenenleri farklı türde türlenmemiş sabitler ise, işlem ve boole olmayan işlemler için sonuç, bu listede daha sonra görünen türü kullanır: tamsayı, rune, kayan nokta, karmaşık.
Çünkü 3
ve 10
Türlenmemiş tamsayı sabitlerdir ifade değeri (Türlenmemiş tamsayıdır 0
bu durumda).
İşlenenlerden biri, sonucun kayan nokta sabiti olması için kayan nokta sabiti olmalıdır. Aşağıdaki ifadeler, türlenmemiş kayan nokta sabiti olarak değerlendirilir 0.3
:
3.0 / 10.0
3.0 / 10
3 / 10.0
Ayrıca yazılan sabitleri kullanmak da mümkündür. Aşağıdaki ifadeler float64
sabit olarak değerlendirilir 0.3
:
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
Yukarıdaki ifadelerden herhangi birinin yazdırılması yazdırılacaktır 0.3
. Örneğin fmt.Println(3.0 / 10)
baskılar 0.3
.
fmt.Println(float64(3) / float64(10))
verir 0.3
.