我有两位小数比较。一个来自一个用 NHibernate 映射的 db 表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;
}
}
它有效,但我真的觉得应该有更聪明的东西:)