奇怪的C#数学计算

时间:2016-01-08 07:10:29

标签: c# math

下面的代码很奇怪。当我调试它时,我可以看到“结果”和“圆形”都是5,但输出是“假”。有什么想法吗?

double result = Math.Log (243, 3);   // 5
double round = Math.Round (result);  // 5
Console.WriteLine (result == round);

1 个答案:

答案 0 :(得分:0)

浮点与等号运算符的比较可能会在舍入值时失去精度。你可以通过比较 epsilon 的差异来解决这个问题。像这样使用Tolerance

Console.WriteLine(Math.Abs(result - round) < 0.0000001); // True