c语言学习错误简记(1)
304 字
2 分钟
c语言学习错误简记(1)
- 1c语言学习简记(2)
- 2c语言学习错误简记(1)本文
前言
近期在跟着教材《c程序设计(第五版)》学习c语言,在学习过程中也发现了一些较为“特殊”的错误(指以后大概率还会再犯),特此进行记录。
正文
以下为示例代码:
#include <stdio.h>int main(){ float e=0.0; for(int d=9;d>=0;d--){ e += 0.1; } printf("%.10f\n",e);}初学者也许多会认为这个代码的打印结果为“1.0000000000”,但实际上最终会打印出“1.0000001192”。
出现这个问题的原因很简单——在c语言中,存储浮点类型数据的方式是“IEEE-754(浮点运算标准)”,其以二进制的形式去存储十进制小数,会不可避免地造成误差。
通常情况下,这种误差并不显著,但会在特定的代码条件下放大导致严重偏差。 目前遇见过的就有由于运用强制格式转换,将浮点型变量截断为整型变量,使得浮点误差被放大的局面。
面对这种情况,建议还是多用整型去处理数据,或者在应用浮点型数据时有意地去控制位数(误差通常出现在小数点后很多位)。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!








