这是来自MSDN有关十进制的文章的代码示例:
decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 0.9999999999999999999999999999 to the console
Console.WriteLine(dividend/divisor * divisor);
当值0.9999999999999999999与1进行相等比较时,这会导致问题。如果不失精度,它们将相等,但在这种情况下,比较结果会为false。
人们通常如何处理这个问题?除了为每个比较定义一些误差范围之外,是否有更优雅的解决方案?