欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问一个很简单却很蛋疼的数字相减有关问题

更新时间: 2014-01-05 00:56:25 责任编辑: Author_N1

 

请教一个很简单却很蛋疼的数字相减问题。

代码如下:

<%=22.5+16+7.2+3-47.9%>
--按一下计算器,应该等于0.8
--在不使用formatnumber来格式化结果的前提下
——实际输出显示.800000000000004


请指教。
--参考方法--
因为是浮点数

浮点数计算是精确到小数点后很多位的,而且不会四舍五入只会截断固定小数位
--参考方法--
引用:
代码如下:

<%=22.5+16+7.2+3-47.9%>
--按一下计算器,应该等于0.8
--在不使用formatnumber来格式化结果的前提下
——实际输出显示.800000000000004


请指教。

浮点数的计算本身就有偏差的
--参考方法--
先去了解浮点数的知识吧
--参考方法--
楼主也提出了 解决办法   
既然只是想讨论的话
3楼 正解。。。
--参考方法--
所以蛋疼只因你压根没弄懂浮点数。
--参考方法--
楼主去了解下浮点数的存储,

如果是0.25 + 1.5 +1.125 简单说只要能直接换算成 2进制的浮点数表示法的结果就是准确的
否者比如0.9 换成 2进制后是 0.XXXXXXXX ...XXXY  一共是浮点数能表示的长度,但是最后一位Y是根据实际运算Y后面那位 如果是1 那么就再Y位上+1 如果是直接抹去Y位后面的无限小数。
所以像0.9 0.2 这样的数据是无法用浮点数精确表示的,简单说就是一个无线循环小数
比如这个0.111101111111 ... 实际存储 是0.11111111111具体位数多少依赖浮点数的存储规则
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 00:56:25
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1606/
本文WWW.DOC100.NET DOC100.NET版权所有。