L'aggiunta di un valore molto piccolo (magnitudine) a un valore molto grande (magnitudine): praticamente nessuna differenza. In questo caso, la differenza è così piccola che non è possibile rappresentare entro la precisione di double
. In sostanza:
double.MinValue + (most things) === double.MinValue
Essa non garantisce di essere in grado di rappresentare ogni singolo double
tra double.MinValue
e double.MaxValue
, e come si aumenta la grandezza, la risoluzione assoluta di ciò che può essere rappresentato diminuisce.
Non dimenticare: ha 308 cifre prima del decimale. Ne stai alterando pochissimi. Tu sei fondamentalmente facendo:
-179769313486232000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000 // yikes!
+ 999999999999999999
Tenete a mente che double
ha circa 17 cifre di precisione; quindi circa 291 cifre di quel numero enorme possono essere ampiamente ignorate.
fonte
2014-09-24 08:54:32
Ora ho trovato http://msdn.microsoft.com/de-de/library/system.double.epsilon%28v=vs.110%29.aspx: "Tuttavia, la proprietà Epsilon non è una misura generale di precisione del tipo Double, si applica solo alle istanze Double che hanno un valore pari a zero o un esponente di -1022. " – habakuk