如题,需要做一个将实数的整数和小数分开的函数。代码如下
```#include <stdio.h>
void splitfloat(float x,int *intpart,float *fracpart);
int main (){
float x;
int intpart;
float fracpart;
printf("Enter x:\n");
scanf("%f",&x);
splitfloat(x,&intpart,&fracpart);
printf("Intpart:%d,Fracpart:%f",intpart,fracpart);
return 0;}
void splitfloat(float x,int *intpart,float *fracpart){
*intpart=(int)x;
*fracpart=x-*intpart;
}
给出的结果是
4327.869
Intpart:4327,Fracpart:0.869141
想问后面多出来的0.000141如何避免??谢谢
看来好像不是int强制转换的问题,编写了如下代码,仍然有4-6位小数。
```void splitfloat(float x,int *intpart,float *fracpart){
int i;
for(i=0;;i++)
if(i>x) {*intpart=i-1;
break;
}
*fracpart=x-*intpart;
}