如何解决UI中以不同的方式显示后台代码中的值
| 两倍:16.8999999
在“ 1”之后,它在调试器中显示为16.9,但在以后的UI中不是16.9,而是16.899999。
为什么会这样呢?
我正在开发WP7应用程序,但是,每当我舍入某个值时,它总是在UI中显示“ derounded”。在将数组分配给列表框的itemssource之前,我什至尝试进行最后一轮操作。这真的很奇怪,我将不胜感激。
我什至在设置itemssource之前尝试自己分配一个值。我分配16.89999并使用上述方法将其取整。在调试器中,我得到了预期的结果,但是在UI中,我得到了另一个结果,即16.899999618。救命?
解决方法
将值分配回变量:
mydouble = Math.Round(mydouble,1);
更新:
自更新问题以来,您可以专注于显示值的方式。
, 嗯,没有:http://ideone.com/zuK9Z
我认为您在代码中犯了一个错误。您是否正在执行以下操作:
double theDouble = 16.8999999;
Math.Round(theDouble);
?
它应该是:
double theDouble = 16.8999999;
theDouble = Math.Round(theDouble);
, 我不知道,但是可能与WP7如何在数据上下文中呈现双精度有关。我将类型更改为float,现在可以正常使用了。我希望处于相同情况的人也能找到这个问题,即使它被否决了。
, 大多数计算机使用二进制浮点。二进制浮点不能精确表示0.1(在二进制中,这是一个循环分数)。因此,它也不能完全代表0.9。
, 双精度值本质上并不精确!
发生这种情况是因为双精度数是用二进制数字而不是十进制表示的,因此结果中会给出所请求数字的最接近的表示形式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。