将小数与其小数位数进行一致比较
本文关键字:小数 比较 | 更新日期: 2023-09-27 18:28:34
我有两个小数要比较。一个来自一个用NHibernate映射的带有precision=22
和scale = 8
的db表,让我们看看我在手表中看到的一个示例值:
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;
}
}
它有效,但我真的觉得应该有更聪明的东西:)
也许你可以试试这些线路(不确定是否最聪明)
bool iscompared = decimal.Truncate(77.472349025229M * 100000000.0M) / 100000000.0M == 77.47234902M;
返回true