gpt4 book ai didi

c# - 比较两位小数

转载 作者:太空狗 更新时间:2023-10-30 00:50:38 24 4
gpt4 key购买 nike

我想在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com