我想在 C# 中比较两个小数,并有一些误差。谁能指出以下代码的问题。请注意,我对小数点后 6 位感兴趣,之后我可以忽略这些值。
var valOne = decimal.Round(valueOne, 6);
var valTwo = decimal.Round(valueTwo, 6);
var difference = Math.Abs(valOne - valTwo);
if (difference > 0.0000001m) {
Console.WriteLine("Values are different");
}
else {
Console.WriteLine("Values are equal");
}
或者有没有更好的办法。
最佳答案
如果您将值四舍五入到小数点后 6 位,则您的 epsilon 值太小。这两个值可以相差的最小量是 0.000001。
例如:
var valOne = Decimal.Round(1.1234560M, 6); // Gives 1.123456
var valTwo = Decimal.Round(1.1234569M, 6); // Gives 1.123457
if (Math.Abs(valOne - valTwo) >= 0.000001M)
{
Console.WriteLine("Values differ");
}
else
{
Console.WriteLine("Values are the same");
}
关于c# - 比较两位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727449/