在C编译程序中 什么时候用单精度变量float,什么时候有用双精度duoble呢大神们帮帮忙
作者&投稿:扶蕊 (若有异议请与网页底部的电邮联系)
C语言中什么时候用单精度?什么时候用双精度?~
根据你需要在内存中保存的数据决定的。
简单来说,double常用于科学计算、对小数点后精度要求较高的场合;
float是32位,double是64位
float32位中,有1位符号位,8位指数位,23位尾数为
double64位中,1位符号位,11位指数位,52位尾数位
取值范围看指数部分
float是有符号型,其中,8位指数位,2^8=(-128—127),因此实际的范围是-2^128—2^127,约为-3.4E38—3.4E38
同理double范围约是-1.7E308—1.7E308,楼主可以自己按下计算器试试看,印象深些
精度是看尾数部分
float尾数位23位,2^23=8.3E6,7位,所以不同的编译器规定不同,有些是7位,有些8位
double尾数52位,2^52=4.5E15,15位,所以double的有效位数是15位
C语言中,单精度浮点型为float, 双精度浮点型为double。具体区别如下:
1、 占用字节空间不同。
一个float变量占用四字节,一个double类型变量,一般占用8字节。
2、 表示范围不同。
float表示范围为-3.4E-38~3.4E+38。
double 表示范围为-1.7E-308~1.7E+308。
3、 精度不同。
float在表示十进制时,有效数字为6到7位。
double在表示十进制时,有效数字为15到16位。
4、输入输出格式不同。
在C语言中,输入输出格式化字符串,float使用%f,而double使用%lf。