我有兩位小數來比較。一來形成映射與NHibernate與precision=22
和scale = 8
一個數據庫表,讓我們來看一個例子價值,我可以在手錶看到:比較小數與其比例一致
77.47234902
,我要和比較一個是:
77.472349025229
當然嚴格的平等失敗。我知道我可以檢查是否差異在一定的epsilon下,我只是問,因爲精確度和量表是第一位十進制表示的公民,如果有最明智的方式來做這樣的比較。
編輯 只是闡述我創造了這個擴展方法的@回覆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;
}
}
它的工作原理,但我真的覺得there'shoud是一些聰明:)
經過一段時間的思考,我仍然認爲'a - b <ε是最聰明/最快的,任何「內部」函數都可能使用相同的方法。 – nobody 2012-03-21 10:44:20