首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NCalc精度问题

NCalc精度问题
EN

Stack Overflow用户
提问于 2014-05-21 16:30:49
回答 3查看 1.7K关注 0票数 0

我在NCalc上遇到了一些舍入问题。我的问题很简单。只需添加0.5和0.5555即可。预期结果为1.0555。这需要四舍五入到3小数。1.056

float和double应该不会对5位数造成任何精度问题。然而,NCalc做到了。

代码语言:javascript
复制
Expression ex = new Expression("0.5 + 0.5555");
object result = ex.Evaluate();

result  1.0554999999999999  object {double}

这将向下取整而不是向上取整。即使误差是0.00000001。有人知道我该怎么解决这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2014-05-21 17:10:24

NCalc将这两个数字作为System.Double值相加,因此结果(也是System.Double)是正确的。

如果NCalc不允许在两个System.Decimal值上强制执行此操作,那么您可能应该寻找其他库。

票数 1
EN

Stack Overflow用户

发布于 2015-08-07 17:06:48

通过向m传递参数,强制NCalc使用小数

代码语言:javascript
复制
 Expression ex = new Expression("[a1] + [a2]");
 ex.Parameters["a1"] = 0.5m;
 ex.Parameters["a2"] = 0.555m;
 object result = ex.Evaluate();
票数 1
EN

Stack Overflow用户

发布于 2014-05-21 17:00:35

不是最好的解决方案..而是一个解决方案。

代码语言:javascript
复制
result.ToString(); 

会给我一个“正确”的号码。通过将其四舍五入为3小数,它将产生正确的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23777916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档