09/03/08 17:38:34
>>352 +0.5か-0.5して(int)でキャストする。
#include <stdio.h>
#include <math.h>
int main(void)
{
int i, c;
double b;
float a[]={
1.49F, 1.499F, 1.4999F, 1.49999F, 1.499999F, 1.4999999F, 1.49999999F, 1.5F,
-1.49F, -1.499F, -1.4999F, -1.49999F, -1.499999F,-1.4999999F,-1.49999999F, -1.5F,
};
for(i=0;i<sizeof a/sizeof(int); i++)
{
if(a[i]>=0.0){
b = floor(a[i]+0.5); // floor は-∞方向への切捨て
c = (int)(a[i]+0.5);
}else{
b = ceil(a[i]-0.5); // ceil は+∞方向への切上げ
c = (int)(a[i]-0.5);
}
printf("%.7f %f %d\n", a[i], b, c);
}
return 0;
}