У меня есть два десятичных знака для сравнения.Один приходит из таблицы БД, сопоставленной с NHibernate с precision=22
и scale = 8
, давайте посмотрим примерное значение, как я вижу его в часах:
77.47234902
то, с чем я сравниваю это:
77.472349025229
конечно, строгое равенство не удается.Я знаю, что могу проверить, находится ли разница под определенным эпсилоном, я просто спрашиваю, поскольку точность и масштаб имеют первостепенное значение в десятичном представлении, если есть самый умный способ сделать такое сравнение.
РЕДАКТИРОВАТЬ Просто разрабатывая ответ @ V4Vendetta, я создал этот метод расширения:
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;
}
}
Это работает, но я действительно чувствую, что должно быть что-то умнее:)