2017-05-04 25 views
0

Warum (0.406 * 10000.0) kehrt 4060.0000000000005 statt 4060.0 in C#Falsche Berechnung in C#

ich eine Funktion geschrieben haben, die nicht überprüft. von Dezimalzahlen in einem doppelten Wert und darunter ist der Code, den ich verwende. Das Problem in dem oben beschriebenen Satz tritt auf, wenn Wert von d is 0.406 und Werten von n is 4 und die Funktion true kehren statt false

Ich bin offen für alternative Lösung.

public static bool HasMoreThanNDecimals(double d, int n) 
{ 
    return !(d * (double)Math.Pow(10, n) % 1 == 0); 
} 

Antwort