C语言的一个小问题 求解答

图片说明
如题 我的代码是这样
#include
int main()
{
double x,y;
printf("输入数据:");
scanf("%lf",&x);

if(x<1)

    y=x;

else if(x>=1&&x<=10) 

    y=2*x-1;

else if(x>10)

    y=3*x-11;

printf("输出结果:x=%lf     y=%lf\n",x,y);
return 0;

}

程序没有出现错误。可是当我输入12.23 时候,给我的结果不是y=25.689999 而是
y=25.69 为什么结果小数点的第二位四舍五入了呢

3x-11=12.23*3-11本来就是25.69,不存在四舍五入。

根据输入的数据,然后用公式计算。double操作

当然25.6899999也是有可能的,因为浮点数计算精度误差和转换成10进制本身也有误差,根据编译器、编译环境、计算机环境的不同,有的时候结果存在微小误差,所以输出无论是你的还是题目中的,都是可能的。

把X,Y均定义为double型,然后用if,else语句应该就能实现吧!

正解:
输入数据:12.23
输出结果:x=12.230000 y=25.690000