岛boki 2019-01-02 01:11 采纳率: 0%
浏览 585

C语言int型强制转换造成的误差可以避免吗

如题,需要做一个将实数的整数和小数分开的函数。代码如下


```#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;
}

  • 写回答

4条回答 默认 最新

  • 宫崎式羽 2019-01-02 00:26
    关注

    你试试把float改为double试试

    评论

报告相同问题?