我使用MathNet库,其中child1为-4.09,child2为-4.162。 Expression.Real((double1 - double2))之后的结果返回0.072000000000000064。它应该是0.072。谁能帮助我了解发生了什么?
private static Expression GetSimplifiedExpression(Expression child1, Expression child2, LaTeXTokenType tokenType)
{
double double1 = Evaluate.Evaluate(null, child1).RealValue;
double double2 = Evaluate.Evaluate(null, child2).RealValue;
return Expression.Real((double1 - double2));
}
答案 0 :(得分:0)
首先,让我们将十进制转换为二进制:
-4.09 = -100.00010111000010100011110101110000101000111101011100001010001111...
-4.162 = -100.00101001011110001101010011111101111100111011011001000101101000...
然后,减去这两个二进制文件。二进制的结果是:
0.00010010011011101001011110001101010011111101111100111011011001...
大约等于十进制0.07199999999999999998
。
这不完全是0.072000000000000064
,但我认为你可以理解它背后的想法。如果您想要准确的结果,可以将double
投射到decimal
:
var decimal1 = (decimal) double1;
var decimal2 = (decimal) double2;