我在NCalc上遇到了一些舍入问题。我的问题很简单。只需添加0.5和0.5555即可。预期结果为1.0555。这需要四舍五入到3小数。1.056
float和double应该不会对5位数造成任何精度问题。然而,NCalc做到了。
Expression ex = new Expression("0.5 + 0.5555");
object result = ex.Evaluate();
result 1.0554999999999999 object {double}这将向下取整而不是向上取整。即使误差是0.00000001。有人知道我该怎么解决这个问题吗?
发布于 2014-05-21 17:10:24
NCalc将这两个数字作为System.Double值相加,因此结果(也是System.Double)是正确的。
如果NCalc不允许在两个System.Decimal值上强制执行此操作,那么您可能应该寻找其他库。
发布于 2015-08-07 17:06:48
通过向m传递参数,强制NCalc使用小数
Expression ex = new Expression("[a1] + [a2]");
ex.Parameters["a1"] = 0.5m;
ex.Parameters["a2"] = 0.555m;
object result = ex.Evaluate();发布于 2014-05-21 17:00:35
不是最好的解决方案..而是一个解决方案。
result.ToString(); 会给我一个“正确”的号码。通过将其四舍五入为3小数,它将产生正确的结果。
https://stackoverflow.com/questions/23777916
复制相似问题