204/5'in 200/5'ten büyük olup olmadığını nasıl kontrol edebilirim? Hem kayan nokta hem de ondalık matematik kullanarak bunu denediğimde zorluk yaşadım. EklemeC# bölümü ile ilgili sorunlar #
cevap
bir .0
veya herhangi bir numaraya bir f
bir kayan nokta ondalık olarak bu sayıyı yorumlamak dili zorlar:
204f
204
bir tam sayıdır kayan noktalı ondalık sayı ve, çift kesinlikli kayan noktalı bir ondalıktır.
Bu nedenle, 204/5
bir tamsayıyı 40
ve 204.0/5
döner bir çift hassas float 40.8
döndürür.
if (204.0/5 > 200.0/5) {
// stuff
}
Veya, matematiksel-basit rotayı sürebilir: şamandıra veya ondalık olacak işi kullanma
if (204 > 200) {
// because you're dividing both of them by 5
}
işlemci yeniden düzenleme yoktur. Sadece derleyiciye sayılarla (tamsayılar, yüzer, çiftler, vb.) Başa çıkmak için ne tür bir kod gerektiğini söyler. – siride
@siride - Kesinlikle doğru. Düzenlenen. – amphetamachine
if ((204.0/5.0) > (200.0/5.0)) {
//do stuff!
}
... ama kayan aritmetik gerçekleştirmek için gereken ondalık/yüzdürme/çiftleme işleminden en az birini yaparak nokta:
decimal x = ((decimal) 204)/5;
decimal y = ((decimal) 200)/5;
if (x > y) // Yes!
Veya kullanım kayan nokta değişmezleri: sadece de
decimal x = 204/5m;
decimal y = 200/5m;
şamandıra/çift işi:
double x = 204d/5;
double y = 200d/5;
decimal x = 204m/5;
decimal y = 200m/5;
farketmez işlenen noktası yüzüyor
Peki, 204/5'i kullanırsanız neler oluyor? Eh, bu ifadeyi ele alalım:
double x = 204/5;
derleyici sağ tarafta türünü çalışmak için değişkenin türünü kullanmaz. Sağ tarafın iki tam sayıyı bölerek elde edilen bir tam sayı olduğu ortaya çıkar. sonucu daha sonra double
'a dönüştürülür ve x
'a atanır. Sorun, aritmetik tamsayıları ile sadece yapılırken, kayan noktaların daha önce gerçekleştirilmesini istiyorsanız, böylece bir kayan nokta sonucu elde edebilirsiniz.
Nedeni, 204/5
hesaplamayı denediğinizde, tam olarak int 204 divides int 5
hesaplanıyor, sonuç aynı zamanda C# içinde int
. 204m/5
deneyebilirsiniz, doğru cevabı alacaksınız.
if (((float)(204)/5) > ((float)(200)/5))
{
//Enter code here
}
else
{
//Enter code here
}
- 1. C# Task.ContinueWith ile ilgili sorunlar
- 2. ile ilgili sorunlar Pdf dosyası indirme ile ilgili sorunlar R
- 3. FragmentPagerAdapter ile ilgili sorunlar
- 4. UITableView ile ilgili sorunlar
- 5. Kereviz ile ilgili sorunlar
- 6. makefile ile ilgili sorunlar '%'
- 7. ile ilgili sorunlar .replace()
- 8. Büyütme API'sı ile İlgili Sorunlar
- 9. Büyük QImage ile ilgili sorunlar
- 10. bind_rows() ile ilgili sorunlar dplyr
- 11. can_upload flag ile ilgili sorunlar
- 12. Bellek sızıntısı ile ilgili sorunlar
- 13. goLang bağımlılıkları ile ilgili sorunlar
- 14. MediaPlayer'ı durdurma ile ilgili sorunlar
- 15. Yönlendirici Vertx ile ilgili sorunlar
- 16. ASP.NET'te TransactionScope ile ilgili sorunlar
- 17. BufferedReader/PrintWriter ile ilgili sorunlar?
- 18. İzotop ekleme ile ilgili sorunlar
- 19. Mesaj dizilerim ile ilgili sorunlar
- 20. Limon dilbilgisi ile ilgili sorunlar (önceliği?)
- 21. Basit bir bağımlılık algoritması ile ilgili sorunlar
- 22. FFI Racket ve Chipmunk ile İlgili Sorunlar
- 23. PP ile çalışabilir Perl ile ilgili sorunlar
- 24. Google Analytics ile WordPress ile İlgili Sorunlar
- 25. Boost :: Python and Boost :: ile ilgili sorunlar Sorunlar ::
- 26. Video sürücüsü ile ilgili WPF oluşturma ile ilgili sorunlar VS2012
- 27. Windows XP'de .ssh dizini ile ilgili sorunlar
- 28. Cin'in ve cout'un işlevleri ile ilgili sorunlar
- 29. Checkbox Win32 api C++ ile ilgili sorunlar kontrol edildi
- 30. DataContractSerializer ile ilgili sorunlar/temsilci alanları
(float) 200/(float) 5 <(float) 204/(float) 5 – FFox