2011-06-25 24 views
26

:Neden double.Parse sıfır işareti yok sayıyor? Örneğin

bool eq = (1/double.Parse("-0.0")) == (1/-0.0); 

eqfalse olacaktır. Neredeyse hiçbir zaman bir soruna yol açmasa bile, sıfır için işareti görmezden gelerek, bazı sorunları gidermek zorunda kalacaktır. . Ham gösterime ihtiyacım olduğu için, özel durumları negatif olan kendi ayrıştırma işlevimi yazmak zorunda kaldım ve her şey için double.Parse kullanıyor.

Bu büyük bir sorun değil, ama neden sıfırın işaretini görmezden gelme kararını verdiklerini merak ediyorum, çünkü öyle görünmüyor ki bu kötü bir şey olmayacaktı.

+0

Sıfırın işaretine neden ihtiyaç duyuyorsunuz? IEEE 754, sonuçta +0 == -0' olduğunu belirtiyor. –

+0

Kod örneğiniz DivideByZeroException'ı nasıl atmaz? – FishBasketGordo

+0

@Donal: Çünkü bayt cinsinden ham gösterime ihtiyacım var ve bu farklı. @FishBasketGordo: IEEE 754 kayan noktadaki sıfıra bölünme yasal ve iyi tanımlanmış olduğundan. – harold

cevap

2

Ben neden haddi zatında bilmem ama olası bir çözüm yoktur: Eğer başında - karakter görürseniz, dize kalanını ayrıştırmak ve sonra inkâr.

+0

Çalıştığından emin olun, '(1/-0.0) '-' (1/0.0) 'i değiştirmeyi deneyin - sonuç' true' olacak NaN mi düşünüyorsunuz? – harold

+0

@harold: Garip, hayır, ben de sonsuzluk için işe yaramadığını düşündüm. (Bunun için mantıklı değil.) Ama evet haklısın, teşekkürler. – Mehrdad

+0

+ ∞, matematiğin herhangi bir modern yorumunda -∞'e eşit değil… –

-3

bulunmaktadır fark şudur: - = 0, 1/0

  1. double.Parse ("0.0") -> INF

  2. 1/-0,0 -> -INF

Ancak eksi işleç 2 ifadesi "-0.0" anlamına gelmiyor.

İlgili konular