olsun. Gerçek koduma yazdırdığımdan dolayı, eğer mümkünse println içinde yayınlamayı tercih ederim.Scala iki tamsayı bölün ve bir şamandıra bir sonuç
cevap
Bu yardımlardan herhangi biri?
println(3.0/4.0)
println(3.toDouble/4.toDouble)
numarayı yazarak ediyorsanız, sadece bir float olarak bunlardan en az birini yazın (Sana Float
değil Double
demek varsayalım):
println(3f/4)
Zaten değişkenlerde sayıları varsa en azından varsa, her durumda (toFloat
val x = 3
println(x.toFloat/4)
ile bunlardan en az birini dönüştürmek, derleyicidiğer dönüştürürile eşleşiyor.)
İlkel türler (Int, Float, Double vb.) Için Scala, Java'daki kuralları izler.
Tamsayılar 3, 4, vb. Yazarsanız, ifadeleri tamsayı olarak kalır. Sonuç bir tamsayıdır böylece Yani
println(3/4)
iki tamsayılar oluşan bir ifade vardır: değerlerden herhangi yerine Int bir Float olması durumda 0.
, tüm ifade bir olmayı genişler Float. Aynı şey bir Double için de geçerlidir. Bu genişleme neredeyse tamamen otomatik olarak gerçekleşir - sadece derleyiciye istediğin şeyin ipucunu vermelisin, ör.
println(3f/4)
Float için genişler ve
println(3.0/4)
Çift için genişler.
Bu dil özelliklerini gerçek programlarda kullanırken, her zaman ortaya çıkabilecek hassasiyet kaybını düşünün. Bu durumda ondalık kesir kaybına neden olan tamsayı bölümünü zaten fark ettiniz. Ama burada gösterilmektedir kayan nokta için farklı bir vaka var:
gerçek sonuç tutun böylece mümkün değildir ikili kesirler, ondalık kesirler değil ve sahip bir ikili gösterimi (IEEE-754 standardını kullanarak) tutulurprintln(4f/3)
4f/3 küçük bir hata olmadan.
scala> println(100f/99f * 99)
99.99999
100 yazdırmayı bekleyebilirsiniz. Bazen bu önemli değil ve bazen de oluyor. Parasal değerlerle uğraşırken çok önemli olan çok yaygın bir durumdur. Başparmak kuralı DAİMA KAÇININ KAÇIRILMASI ve para için iki katıdır: yerine BigDecimal kullanın ya da sadece uzun bir peni olarak tutmayın ya da bazen Dizeler'e başvurun (BigDecimal ile birlikte güzel bir şekilde oynayın. yön).
- 1. C# bölün ve birleştir?
- 2. objektif c şamandıra değerleri
- 3. Git büyük sayıları bölün (büyük.Int)
- 4. şamandıra boyutları ve çift
- 5. html sayfasını iki satırlık% 50 yüksekliğe bölün.
- 6. Tamsayı iki bayta ayırma
- 7. TypeError: Bir şamandıra
- 8. Pandalar: İki tarih sütunu çıkarılıyor ve sonuç
- 9. nasıl birlik iki veri tabloları ve bir sonuç
- 10. Kesişen iki tamsayı bitwise
- 11. css şamandıra ve dolgu
- 12. Neden "tek duyarlıklı" bir şamandıra?
- 13. Normal ifadeyle bir dizeyi birkaç alt dizeye bölün. Her iki eşleşme ve eşleşmeyenler
- 14. Sağa sola doğru bir şamandıra yazdırın
- 15. Bu bir Firefox şamandıra hatası mı?
- 16. Maven'de bağımlı iki yolla karışık java ve scala koduyla bir Scala projesi oluşturabilir miyim?
- 17. İki koşulda Scala filtresi
- 18. MySQL: iki sonuç kümesinin farkı
- 19. nasıl bir şamandıra puanı var yüzde
- 20. yöntem createGraphics (şamandıra, şamandıra) tipi PdfContentByte gelen
- 21. Flex - Bir TextInput Alanına tamsayı (iki yönlü) nasıl bağlanır
- 22. REAL() yalnızca bir 'tamsayı' değil, bir 'tamsayı' için uygulanabilir, bir 'tamsayı' değil,
- 23. chrome.hid.getDevices() ve chrome.usb.getDevices() herhangi bir sonuç döndürmüyor
- 24. Bir bayttan tamsayı okuma []
- 25. Bir tamsayı değeri PHP
- 26. Scala: bir tam sayı dizesi eşleştir ve ayrıştır?
- 27. Farklı bir sonuç şeması
- 28. Scala Breeze'de iki DenseVector nasıl sıkıştırılır?
- 29. Scala, İki dosya var sınıf
- 30. İki sütun üzerinde Benzersiz Kısıtlama Postgres: Tamsayı ve Boole
Muhtemelen bir float yerine bir çift kullanmak istersiniz. –