关于c语言float取值范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于c语言float取值范围相关的知识,希望对你有一定的参考价值。

我看到书上写:float型变量取值范围是-2X2^127~2X2^127 也就是-3.4X10^38~3.4X10^38。 请问下为什么2能转换成3.4 2^127能转换成10^38 我到这段看不明白

你的问题好奇怪:2能转换成3.4?没听说过!你只能这么理解:2X2^127和3.4X10^38相等或近似,是分别用二进制幂和10进制幂表示的同一个数。用计算器输入2的128次方,结果就是3.40.....x10的38次方。2x10^2=40x5,不该说2怎么转换成40、10^2怎么转换成5的吧?另外建议不钻这种牛角尖,知道float是4字节,表示 的数有个范围就行了,不然你几天才能看一页啊?以后类似的情况多着呢! 参考技术A

float的取值范围:1.175494e-038  ~ 3.402823e+038


在C语言中可以使用FLT_MIN和FLT_MAX这两个C语言标准库中定义的宏来来表示float浮点数的最小值和最大值。需要包含头文件float.h。

#include <stdio.h>
#include <float.h>
int main()

printf("%e\\t%e\\n", FLT_MIN, FLT_MAX);
return 0;

参考技术B float型变量用32位2进制存放。
按IEEE-754-1985 标准:
1位符号位,8位指数位,23位尾数位。
另规定了 正无穷 和 负无穷 及 NaN 表示法。
float型 数值 范围 是 ±1.18×10^−38 到 ±3.4×10^38

你的编译器 数值类型和数值范围 规定 在 头文件 float.h limits.h 里,可以打开来看。

世界上 所有的计算机都遵循 IEEE-754 标准。

C语言中怎么计算一个类型的取值范围?如 char 用程序算

C语言中char类型占一个字节,属于有符号数,按补码进行数据存放。

如果用程序,来获取取值范围,可以设置两个变量来存储最大值和最小值,另设一个unsigned char型变量,从一个字节的0(00000000)开始累加,直到变成255(11111111),统计其中的最大和最小值。

参考代码:

#include <stdio.h>
int main()

    unsigned char i;
    char min, max;
    max=min=0;
    for( i=0;i<255;i++ )
    
        if ( min>(char)i ) //按有符号数进行比较
            min=i;
        if ( max<(char)i ) //按有符号数进行比较
            max=i;
    
    printf("min=%d max=%d\\n", min, max );
    return 0;

运行结果:

min=-128 max=127

参考技术A 根据char的取值范围和unsigned char的取值范围的位数,如char和unsigned char都是8位,char型最高位是符号位,1代表为负数,所以为-2^7-1~~+2^7-1 即-128~+127 ,而unsigned char为2^8-1=256
即0~255本回答被提问者采纳
参考技术B 首先确定字节,然后确定位,有符号的就是-2的位次方到2的位次方–1,有符号的char是8字节,它的取值范围就是-2的7次方到2的7次方再减一追答

说错了是8位不是8字节

首先确定字节,然后确定位,有符号的就是-2的位–1次方到2的位–1次方–1,有符号的char是8位,它的取值范围就是-2的7次方到2的7次方再减一

无符号的就是0到2的位次方–1

感觉还是十六进制表示有符号的一字节就是7F~80,两字节就是7FFF~8000,

参考技术C char是一个字节也就是8位二进制数字,所以一个char的取值范围是0-255
基本上都是这样计算,就是查询各个类型的位数。

以上是关于关于c语言float取值范围的主要内容,如果未能解决你的问题,请参考以下文章

C语言各个数据类型取值范围

C语言中怎么计算一个类型的取值范围?如 char 用程序算

C语言中怎么计算一个类型的取值范围?如 char 用程序算

C语言各个数据类型取值范围

C语言--数据类型--取值范围

char类型的取值范围为何是-128~127,怎么算?