在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。

单精度和双精度取决于你的程序对数据精度以及数据范围的要求。 单精度的默认有效数字是6~7位,双精是15~16位。 单精度的范围是:-3.4*10^(38)~3.4*10^(38) 双精度是:-1.7*10^(308)~1.7*10^(308) 当你的程序在内存比较充裕的环境下并且执行复杂度不高或者时间要求不严格的程序时,一般使用双精度以确保数据范围不超界。 但当你的程序运行内存比较有限,或者执行复杂度高的算法并对时间有较为严格要求,那么,变量的类型选择很重要,把一些明确精度要求或者运算结果范围在float范围内的数定义为float会让程序更好地适应运行环境。