C语言中魔性的float浮点数精度问题
从一个问题引入如果你以前接触过C语言,那么对下面的这段代码一定很熟悉:相信很多人不用运行,能够直接报出答案, f_num1 = 21.75 , f_num2 = 13.45 , f_num1 + f_num2 = 35.2 ,无论是从常识还是理论角度都不难理解。下面我们运行一下程序,验证我们的猜测正不正确:。f_num1 和 f_num2 的结果和我们预想的一样,之所以后面多了四个0,是因为 %f 默认保留6位有效数字。如果是C++呢下面我们看看以上程序的C++版本:直接来看输出结果吧:。以上是cout处理浮点数时的特点,应该记住。怎么解决那么,既然float有这么多稀奇古怪的问题,应该怎么去解决和避免呢?这才是真正核心的原理部分。在这里只浅尝辄止地讲述了一下,但相信阅读者已经对精度问题有了一个初步的认识。
用户评论