整数类型表示的范围


C中float类型中小数位数为7位,即可精确到小数点后7位,例如0.123456789,在float类型中只能取到0.1234567,后面的两位有效数字损失掉了;
double类型中小数位数为15位,可精确到小数点后15位。

C语言中每个单精度浮点型数据在内存中占用4个字节的存储空间,它的有效数字一般有7~8位;双精度浮点型数据所占的存储空间为8个字节,有效数字一般有15~16位,这些指标与具体的计算机系统和C语言编译系统有关。

就单浮点型数据的数值精度而言,举个例子说明,例如实数1234567.89,有效数字超过了8位,如果将它赋值给单精度浮点型变量,该变量的值就是1234567.80,其中最后一位是一个随机数,损失了有效数字,降低了精度。

(printf 默认打印6位小数)

double 可以替换 int/unsigned int ,但float 不行。

double与long long 范围比较:
double

        double是计算机使用的一种数据类型。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。 
它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.797693E+308。

        double在计算机中的存储方法:无论是单精度还是双精度在存储中都分为三个部分:

符号位(Sign) : 0代表正,1代表为负
指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
尾数部分(Mantissa):尾数部分
        正是它不同于long long的存储方法,使得它虽然只有64位但是可以比同样是64位的long long 类型取值范围大很多。

对于long long 

        64位的范围应该是[-2^63 ,2^63],既-9223372036854775808~9223372036854775807。

        它的存储方法就是按位存储。有符号位就有一位符号位,没有符号位就64位全部来存储这个数

int _tmain(int argc, _TCHAR* argv[])
{
	float f = 0.123456789;

	printf("float:%.10f\r\n",f);
	double d = 0.123457689;
	 
	printf("double:%.20lf\r\n", d);

	unsigned long long ul = 0x7ffffffff;
	long long l = 0x7ffffffff;
	printf("long long:%lld\r\n", ul);

	d = 0x7ffffffff;
	printf("doubleD:%lf\r\n", d);

	f = 0x7fffffff;
	printf("floatF:%lf\r\n", f);

	getchar();
	return 0;
}

可见float精度小数位数,double范围包括int,但小于long long.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值