看下printf("%.2lf\n" 4.015);这条语句,该如何处理

看下printf("%.2lf\n", 4.015);这条语句
为何输出的是4.01,而预计是要输出4.02的
难道这就是传说的浮点数精度的问题
求原因
求怎么解决

------解决方案--------------------
对有些小数,用double不能精确表示的,做4舍5入的时候只是简单判断是否小于5,因此被舍掉了,当然加一个很小的数可以解决这个问题,但是这个数很难选择,小了没效果,大了可能把不应该入的入了。。。要看你输入数据的取值范围