SORU
27 Ocak 2009, Salı


Güvenli C 0 için eşitlik için kayan nokta değerleri#/kontrol etmektir.NET?

Çift Kişilik veya ondalık değerleri yazın eşitliği normalde güvenilir bir şey değil biliyorum, ama eğer 0 özel bir durum olup olmadığını merak ediyorum.

0.00000000000001 ve 0.00000000000002, 0 arasında imprecisions anlayabiliyorum ederken, çok zor bir şey olduğu için berbat görünüyor kendisi. Eğer bir şey hakkında belirsiz iseniz, hiçbir şey değil artık.

Ama benim için değil o yüzden bu konu hakkında pek bir şey bilmiyorum.

double x = 0.0;
return (x == 0.0) ? true : false;

Bu her zaman doğru dönecek?

CEVAP
27 Ocak 2009, Salı


güvenlibekliyoruz karşılaştırma döndürür true Eğer ve sadece iki değişken vardır değeri tam olarak 0.0 (hangi orijinal kod parçası, elbette, durum). Bu == operatör anlamı ile tutarlıdır. a == b demek "a b eşittir".

güvenli değil(çünküdoğru değilbazı hesaplama sonucu sıfır Çift (ya da, genellikle, daha fazla kayan nokta ) olacağını tahmin etmek matematiksel aynı hesaplama sonucu sıfır olduğunda aritmetik. Bu hesaplamalar yere geldiğinde, kayan nokta hassas hata görünür, çünkü, söylemeye gerek yok, Gerçek sayı olmayan bir kavram Matematik aritmetik.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Curso Online Gratuito

    Curso Online

    4 Aralık 2011
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • sinumatic

    sinumatic

    19 Aralık 2006