全部问题 > 当前问题

老师我想问一下哪里错了呢

  float fun ( float  h )
{int  d, p;
 (int)p=h*1000;
 d= p%10;
 if(d<5)
 h=(int)(p-d)/1000.0;
else
 h=(int)(p-d+10)/1000.0;
return h;
}

一条早起的咸鱼 2017-2-18 11:56:12

共 4 个回答

qqq 2017-2-18 19:29:43

你的变量类型转换不对啊。。

 (int)p=h*1000;你这一句是想干嘛?p本来就是int型了,你为什么还要在前面强制转换成int。。你应该把(int)写在h*1000前面,也就是p=(int)(h*1000),下面代码的类型转换也是同样的问题,两个int类型转换是多余的啊。。你自己改改吧,还不行再问。

一条早起的咸鱼 2017-2-19 15:12:56

回复 qqq

float fun ( float  h )

{

int x, y;

x=(int)(h*1000);

y=x%10;

if(y<=4)

h=(x-y)*1.0/1000;

else

h=(x-y+10)*1.0/1000;

return h;

}

现在改为这个了,但运行后the original data is 1234.567017

result为1234.569946?这又是哪里出问题了?

最佳答案

qqq 2017-2-19 21:33:04

回复 一条早起的咸鱼:可能是float和double的精度问题,我改了一下,现在这个可以了。

if(y<=4)

h=(float)(x-y);

else

h=(float)(x-y+10);

h=(float)h/1000;


一条早起的咸鱼 2017-2-20 13:11:24

回复 qqq:非常感谢