C语言实型数据(浮点数)

实数的表示

1) 十进制数形式

由数码0~ 9和小数点组成。 例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均为合法的实数。

注意,必须有小数点。

2) 指数形式

由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:

a E n(a为十进制数,n为十进制整数)

其值为 a*10n。如:

2.1E5 (等于2.1*105)

3.7E-2 (等于3.7*10-2)

0.5E7 (等于0.5*107)

-2.8E-2 (等于-2.8*10-2)

以下不是合法的实数:

345 (无小数点)

E7 (阶码标志E之前无数字)

-5 (无阶码标志)

53.-E3 (负号位置不对)

2.7E  (无阶码)

  

1 #include <stdio.h>
2 int main(void){
3     printf("%f\n ",356.);
4     printf("%f\n ",356);
5     printf("%f\n ",356.0);
6     return 0;
7 }

3) 实数在内存中的存放形式

实数一般占4个字节(32位)内存空间。按指数形式存储。实数3.14159在内存中的存放形式如下:

说明:

  • 小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。
  • 指数部分占的位数愈多,则能表示的数值范围愈大。

实型变量

实型变量分为:单精度(float型)、双精度(double型)和长双精度(long double型)三类。

在VC6.0中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。


类型说明符


比特数(字节数)


有效数字


数的范围


float


32(4)


6~7


10-37~1038


double


64(8)


15~16


10-307~10308


long double


128(16)


18~19


10-4931~104932

  实型变量定义的格式和书写规则与整型相同。例如:

1 float x,y;  // x,y为单精度实型量
2 double a,b,c;  // a,b,c为双精度实型量

  实数的舍入误差。

1 #include <stdio.h>
2 int main(void){
3     float a,b;
4     a=123456.789e5;
5     b=a+20;
6     printf("a=%f\n",a);
7     printf("b=%f\n",b);
8     return 0;
9 }

1.0/3*3的结果并不等于1

#include <stdio.h>
int main(void){
    float a;
    double b;
    a=33333.33333;
    b=33333.33333333333333;
    printf("a=%f\n b=%f\n",a,b);
    return 0;
}

从本例可以看出:

    • 由于a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。
    • b 是双精度型,有效位为十六位。但VC6.0规定小数后最多保留六位,其余部分四舍五入。

注意:实型常数不分单、双精度,都按双精度double型处理。

C语言实型数据(浮点数),布布扣,bubuko.com

时间: 2024-10-05 23:14:37

C语言实型数据(浮点数)的相关文章

C语言字符型数据(字符)

字符型数据的表示 字符型数据就是字符. 字符型数据是用单引号括起来的一个字符.例如: 'a'.'b'.'='.'+'.'?' 都是合法字符型数据. 在C语言中,字符型数据有以下特点: 字符型数据只能用单引号括起来,不能用双引号或其它括号. 字符型数据只能是单个字符,不能是字符串. 字符可以是字符集中任意字符.但数字被定义为字符型之后就不能参与数值运算.如'5'和5 是不同的.'5'是字符型数据,不能参与运算. 转义字符 转义字符是一种特殊的字符.转义字符以反斜线"\"开头,后跟一个或几

C语言整型数据(整数)

整型数据即整数. 整型数据的分类 整型数据的一般分类如下: 基本型:类型说明符为int,在内存中占2个字节. 短整型:类型说明符为short int或short.所占字节和取值范围均与基本型相同. 长整型:类型说明符为long int或long,在内存中占4个字节. 无符号型:类型说明符为unsigned.  无符号型又可与上述三种类型匹配而构成: 无符号基本型:类型说明符为unsigned int或unsigned. 无符号短整型:类型说明符为unsigned short. 无符号长整型:类型

C语言对两个浮点数进行比较的方法

C语言对两个浮点数进行比较: C语言用"=="来比较两个浮点数,返回值完全是不确定的. 因此只能定义一个精度来确定是否相等: if(fabs(a-b) < 0.0000001){ //double类型的a和b近似相等 } 原文地址:https://www.cnblogs.com/ming-4/p/11736105.html

(31-33)判断两个实型数据是否相等,求一元二次方程的根,逻辑型数据

(31)判断两个实型数据是否相等 1.abs求一个整型数据的绝对值,fabs,求一个浮点型数据的绝对值 (32)求一元二次方程的根 #include<stdio.h>#include<math.h>int main(void){ double a,b,c,d; printf("请依次输入二元一次方程的洗漱:\n"); scanf("%lf%lf%lf",&a,&b,&c); if (a==0) { printf(&qu

整型数与浮点数在内存中的表示

落下的基础还是要早点补起来的... 整型数在内存中存储 正整数 以int a = 25为例 1.      将a用2进制表示 (25)10 = (11001)2 因为int型在内存中占4个字节,也就是32位,实际是 (0000 0000 0000 0000 0000 0000 0001 1001) 2.      用16位表示 (0 0 0 0 0 0 19) à(00 00 00 19) 在内存中低地址在高位,也就是 19 00 00 00 负整数 以int b = -25为例 1.    将

Java千问:你知道Java语言布尔型数据到底占多大空间吗?

我们都知道,Java语言中有个boolean类型.每个boolean类型的变量中存储的是一个true或者是false的逻辑值.那么存储这个逻辑值,需要多大的空间呢?从理论上来讲,存储这个逻辑值只需要1个位(bit)就可以了,很多教科书上谈到这个问题的时候,也说boolean类型的数据在内存中只占1个位. 但是稍微有点计算机常识的人都知道:计算机完成寻址操作的时候,是以字节为最小单位进行的.也就是说每次要读取内存中数据的时候,最小只能精确到1个字节,不能单独读取某个位上的信息.如果boolean类

C语言int型数据范围

在32位及以上操作系统上,int型数据的十进制表示范围是:-231 到   231-1.原因:因为int是带符号类型,所以最高位为符号位,于是最大表示的正数的原码(正数的原码和补码相同):01111111 11111111 11111111 11111111,也就是2的31次方减1.再来看最小值,-2的31次方的原码表示为10000000 00000000 00000000 00000000,此时最高位的数字既代表符号(1代表是负数,0代表是正数),也代表数值.求它的补码(除符号位外按位取反,最

【C语言模拟实现】浮点数-转-定点数

要想超神,就要什么都精! 知识准备: 1. 输出浮点数的十六进制形式?(利用指针输出) 将浮点数指针-转换成-整型指针,以十六进制的格式输出指针内容. 示例程序: #include<stdio.h> int main() { float *var; scanf("%f",var); printf("%x",*((int*)var)); } 测试: 输入(float) 输出(十六进制) 二进制 8.25 41040000 0100 0001 0000 01

c语言的printf输出浮点数的一些问题

在printf时:如果以%f格式输出,将输出8个字节(scanf输入时,%f是4个字节) 在参数入栈时如果是float型或者double型 直接入栈8个字节,此时输出及后续输出都没问题 但如果参数小于8个字节且不是float型:比如int   shor int  ,就会扩展符号位,成为4个字节再入栈,但是输出的是8个字节,所以会读取其他参数的入栈结果 #include <stdio.h> #include <stdlib.h> #include <string.h> i