为啥printf ("(9.95 * 100) = %d \n", (9.95 * 100));结果是994?

结果994是怎么回事?
printf("(9.95*100)=%d\n",(9.95*100));
我的真实意思是想理解为什么是9.95*100的时候结果是994.而9.96,9.97,9.94,9.93均是正常的
慕少森
浏览 422回答 2
2回答

慕妹3146593

浮点运算有精度损失,9.95*100算出来的结果应该是994.9999999999999,取整是截掉小数部分,就是994了。如果用四舍五入计算,就能得到995printf("(9.95*100)=%d\n",round(9.95*100));

FFIVE

拿起任何一本技术书籍,看浮点数计算章节。比如:PHP:Float浮点型-Manual另外,可以研究一下以下什么差别printf("(9.95*100)=%s\n",(9.95*100));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript