c语言问题,帮帮忙啊。

来源:百度知道 编辑:UC知道 时间:2024/06/16 02:33:17
#include<stdio.h>
void main()
{
float i,m;
int j;
printf("请输入您要的数:");
scanf("%f",&i);
j=(int)i/1;
m=(float)(i-j);
printf("j=%d m=%.6f\n",j,m);
}
为什么这个程序得出的答案,小数部分总是不对呢,不是多出0.000001就是少0.000001.这是怎么回事?
楼下的各位,我用的vc++6.0软件,我执行这个程序是输入的23.345结果就会是j=23 m=0.344999我输入23.567第一次执行是结果是j=23 m=0.567001,第二次结果是j=23 m=0.566999,当然有时候是正确的

我用vc验证,程序正确啊

你是不是小数点后输入了7位啊?
float类型小数点后只能有6位的

单精度型精确到7位,你这怎么是六位就不准了呢?你用double应该就没问题了

小数点后的精确度问题!!!!

int 换成 double