Ich habe zwei Dezimalstellen zu vergleichen. Einer kommt aus einer Datenbank-Tabelle, die mit NHibernate mit precision=22
y scale = 8
Lassen Sie uns einen Beispielwert sehen, wie ich ihn auf der Uhr sehen kann:
77.47234902
derjenige, mit dem ich vergleiche, ist:
77.472349025229
Natürlich scheitert die strikte Gleichstellung. Ich weiß, ich kann prüfen, ob die Differenz unter einem bestimmten Epsilon ist, ich frage nur, da Präzision und Skala erste Bürger in der dezimalen Darstellung sind, wenn es eine intelligenteste Weise, einen solchen Vergleich zu tun.
EDITAR Um die Antwort von @V4Vendetta zu vervollständigen, habe ich diese Erweiterungsmethode erstellt:
public static class ScaleComparer
{
public static bool ScaleEquals(this decimal lhs, decimal rhs, int scale)
{
decimal mult = (decimal)Math.Pow(10, scale);
return decimal.Truncate(lhs * mult) / mult == decimal.Truncate(rhs*mult)/mult;
}
}
Es funktioniert, aber ich habe wirklich das Gefühl, dass es etwas Intelligenteres geben sollte :)