c语言中什么是单精度型和双精度型???各举个例子。。。
答案:5 悬赏:0 手机版
解决时间 2021-04-29 18:33
- 提问者网友:两耳就是菩提
- 2021-04-28 19:12
c语言中什么是单精度型和双精度型???各举个例子。。。
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-04-28 19:21
c语言中 单精度型和双精度型 指两种 类型 的 浮点数。
单精度型 即 float 型, 有效数字约10进制7位
双精度型 即 double 型, 有效数字约10进制15位
所以能描述的数值精度不同。
c语言 数据 用 IEEE 754 国际标准。float 型 用 4 字节存放,double 型 用 8 字节存放。
Single Precision 2进制: 数符1位,指数8 位,尾数 23 位
Double Precision 2进制: 数符1位,指数11 位,尾数 52 位
单精数值范围: ± ~10的-44.85次方 到 约 10的38.53次方
双精度数值范围 ± ~10的-323.3 次方 to 约 10的 308.3次方。
float a=1.234567;
double b=1.2345678901234;
-------------
10%3 整除取余数,得 1。
1 用 float 和 double 表示,精度没有区别。 a=(float)(10%3); b=(double)(10%3);
强制转换 要带 小括号。
单精度型 即 float 型, 有效数字约10进制7位
双精度型 即 double 型, 有效数字约10进制15位
所以能描述的数值精度不同。
c语言 数据 用 IEEE 754 国际标准。float 型 用 4 字节存放,double 型 用 8 字节存放。
Single Precision 2进制: 数符1位,指数8 位,尾数 23 位
Double Precision 2进制: 数符1位,指数11 位,尾数 52 位
单精数值范围: ± ~10的-44.85次方 到 约 10的38.53次方
双精度数值范围 ± ~10的-323.3 次方 to 约 10的 308.3次方。
float a=1.234567;
double b=1.2345678901234;
-------------
10%3 整除取余数,得 1。
1 用 float 和 double 表示,精度没有区别。 a=(float)(10%3); b=(double)(10%3);
强制转换 要带 小括号。
全部回答
- 1楼网友:零点过十分
- 2021-04-28 21:45
float是单精度型4字节,double是双精度型8字节
- 2楼网友:患得患失的劫
- 2021-04-28 20:52
float是单精度型,double是双精度型,例子:
float a;
double b;
。。。。。。。。。。。追问float(10%3) double (10%3)结果有什么不同啊??追答
你这样是看不出结果的,你在用10(注意这是个整形数)%3的时候,结果先是强制转换为整形,也就是1(这是个整形数),接着再用float或者double进行强制转换也不会有精度问题,所以这样是看不出来的,你可以这样查看单精度和双精度数:
printf("%.15f %.15lf", float(10.0/3), double(10.0/3));
强制float和double输出小数点以后15位数据,你就可以看到这样的结果:
看,float型数据在小数点6位后就乱码了,这样明白了吧。
对了你如果用10/3这样也是不行的,它强制输出的是整形。
float a;
double b;
。。。。。。。。。。。追问float(10%3) double (10%3)结果有什么不同啊??追答
你这样是看不出结果的,你在用10(注意这是个整形数)%3的时候,结果先是强制转换为整形,也就是1(这是个整形数),接着再用float或者double进行强制转换也不会有精度问题,所以这样是看不出来的,你可以这样查看单精度和双精度数:
printf("%.15f %.15lf", float(10.0/3), double(10.0/3));
强制float和double输出小数点以后15位数据,你就可以看到这样的结果:
看,float型数据在小数点6位后就乱码了,这样明白了吧。
对了你如果用10/3这样也是不行的,它强制输出的是整形。
- 3楼网友:患得患失的劫
- 2021-04-28 20:09
float(10%3)结果是1.000000即七位小数点后保留。
double (10%3)就是15位。
说到底就是个精度的问题
望采纳
double (10%3)就是15位。
说到底就是个精度的问题
望采纳
- 4楼网友:長槍戰八方
- 2021-04-28 19:27
单精度就是float类型,是4个字节的,因此精度没有那么高
双精度就是double类型,是8个字节的,可以表示的数字当然就更多,小数点后面的精度也越高
float f; // 是4个字节的单精度变量
double d; // 是8个字节的双精度变量追问float(10%3) double (10%3)结果有什么不同啊??追答当然有不同,虽然都是10%3=3,但是前者强制转换成float类型,是4个字节的,而后者强制转换成double类型,是8个字节的。4个字节和8个字节,区别大吧,精度当然差很多
双精度就是double类型,是8个字节的,可以表示的数字当然就更多,小数点后面的精度也越高
float f; // 是4个字节的单精度变量
double d; // 是8个字节的双精度变量追问float(10%3) double (10%3)结果有什么不同啊??追答当然有不同,虽然都是10%3=3,但是前者强制转换成float类型,是4个字节的,而后者强制转换成double类型,是8个字节的。4个字节和8个字节,区别大吧,精度当然差很多
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯