Loading

double 到 int 的精度转换问题

#include<stdio.h>
int main(){
	double a = 1;
	double b = 1.2;
	double c = 1.00;
	double d = 1.02;
	double e = 5;
	double f = 6.01;
	printf("double %f -> %d\n",a,a);
	printf("double %f -> %d\n",b,b);
	printf("double %f -> %d\n",c,c);
	printf("double %f -> %d\n",d,d);
	printf("double %f -> %d\n",e,e);
	printf("double %lf -> %d\n",f,f);
	printf("(int)double %f -> %d\n",a,(int)a);
	printf("(int)double %f -> %d\n",b,(int)b);
	printf("(int)double %f -> %d\n",c,(int)c);
	printf("(int)double %f -> %d\n",d,(int)d);
	printf("(int)double %f -> %d\n",e,(int)e);
	printf("(int)double %f -> %d\n",f,(int)f);
	return 0;
} 
double 1.000000 -> 0
double 1.200000 -> 858993459
double 1.000000 -> 0
double 1.020000 -> -2061584302
double 5.000000 -> 0
double 6.010000 -> 1889785610
(int)double 1.000000 -> 1
(int)double 1.200000 -> 1
(int)double 1.000000 -> 1
(int)double 1.020000 -> 1
(int)double 5.000000 -> 5
(int)double 6.010000 -> 6

1.2在内存中是以double类型存储的,具有64位的长度,但是%d输出时只能截取低32位进行输出。

printf中用%d输出float或者double

posted @ 2020-11-06 20:51  ZXYFrank  阅读(331)  评论(0编辑  收藏  举报