在此程序中,调试时显示W和x的值都为99,但程序运行时进入的却是第一个if语句。这是因为浮点数的精度问题,在比较时会有误差。
这里可以看出c的值并不是2.46800000000,而是2.4679999352四舍五入出来的。因此浮点数不要直接用==或!=来做比较。
(ps:带小数点的字面量是double而非float,需要用f或F后缀来表明身份)
对x赋值99.1,电脑中的值是99.09999999994。
对于问题的解决,a==b我们可以改用fabs(a-b)<1e-8或者更小的数。
最开始的代码可以改为
整数在电脑里是纯二进制数,但浮点数是编码的形式。
当运算元角分之类的问题时,不要用元做单位使用double类型,而是用分做单位使用整型,int类型的数据是精确的。
标签:四舍五入,程序运行,double,浮点数,电脑,比较 来源: https://www.cnblogs.com/lzxcnblogs/p/15364433.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。