C语言中的浮点数据类型

目录
  • 1. 处理带小数的数值
  • 2. 浮点类型
  • 3. 浮点类型的sizeof

1. 处理带小数的数值

我们来讨论一下类似于1.2345670.00001,这类非整数的数据。我们先试试看,int能不能装这些数据呢?

#include <stdio.h>
int main()
{
    int a = 1.234567;
    int b = 0.00001;
    int c = 365.12345;
    printf("%d\n", a);
    printf("%d\n", b);
    printf("%d\n", c);
    return 0;
}

好像不太行,小数部分都丢失了。那怎么办呢?我们需要引入新的类型了。

2. 浮点类型

我们把上面的代码中int,用float替代。

  printf("%d\n",a);中的占位符%d,我们知道%d是用于整数的,因此%d肯定是不行的。所以我们用%f替换。

#include <stdio.h>
int main()
{
    float a = 1.234567;
    float b = 0.00001;
    float c = 365.12345;
    printf("%f\n", a);
    printf("%f\n", b);
    printf("%f\n", c);
    return 0;
}

这时我们发现,大部分的数据都对了,但是365.12345变成了365.123444。是的,浮点数不能表示无限的精确,它有一定的误差。并且注意,这个误差并不是四舍五入的。

C标准规定,float类型必须至少能表示6位有效数字,并且取值范围至少是10^-37~10+37

那有没有精度更高的float类型呢?有的,叫做双精度浮点型,double。我们把上面的代码中的float换成double,%f依然不变。

#include <stdio.h>
int main()
{
    double a = 1.234567;
    double b = 0.00001;
    double c = 365.12345;
    printf("%f\n", a);
    printf("%f\n", b);
    printf("%f\n", c);
    return 0;
}

这下365.12345对的上了。但是,请注意double类型也是有精度范围的。如果更高精度的数据,double也会出现误差。我们日常的应用中,不会苛求一个精度完美的数值,是会允许存在一定误差范围的。但是,如果涉及金融等精度关键的领域计算时。请参照相关的处理精度关键数值的文档,不能简单的使用floatdouble

3. 浮点类型的sizeof

接下来,我们用sizeof来测量一下float,和double都占用了多少字节大小吧。

float为4,double为8。

sizeof测量的结果,是一个整数,表示所占用的字节大小。字节数哪有1.5的字节的。所以这里用%d来打印。

到此这篇关于C语言中的浮点数据类型的文章就介绍到这了,更多相关C语言浮点数据类型内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言菜鸟基础教程之单精度浮点数与双精度浮点数

    上节课 简单介绍了浮点数.计算机程序中的浮点数分为单精度浮点数和双精度浮点数. 单精度和双精度精确的范围不一样. 计算机里的最基本的存储单位用位(bit)来表示.bit只能用来存储0或1. 稍大一点的单位是字节(Byte,简写为B). 再大一级的是千字节(kilo Bytes),用k来表示. 再大一级的单位是兆字节(Mega Bytes),用M来表示.一张照片的大小通常为1~3M. 再大一级的单位为G.一部高清电影的大小通常为1~2G. 再大一级的单位为T. 换算关系为: 1B = 8bit 1

  • C语言中魔性的float浮点数精度问题

    从一个问题引入 如果你以前接触过C语言,那么对下面的这段代码一定很熟悉: #include <stdio.h> int main(void) { float f_num1 = 21.75; float f_num2 = 13.45; printf("f_num1 = %f\n", f_num1); printf("f_num2 = %f\n", f_num2); printf("f_num1 + f_num2 = %f\n", f_n

  • 一篇文章带你了解C语言浮点数之间的比较规则

    目录 你认为这段代码输出什么? 为什么不等于呢? 应该怎么解决? 那么怎么判断两个浮点数 f1 和 f2 相等呢. 伪代码 可以简化为 >> 怎么判断浮点数等于0? 还有一个问题 总结 你认为这段代码输出什么? int main() { float f1 = 1.1; float f2 = 2.2; if (f2 - 1.1 == f1) printf("等于"); else printf("不等于"); return 0; } 答案是不等于. 为什么不

  • C语言数据(整数、浮点数)在内存中的存储

    本篇主要讨论:整数.浮点数在内存中是怎么保存的! 数据类型详细介绍 在前面C语言基础概览中,已经提到过了基本的C语言内置类型,但C语言的数据类型有无数种~ 但是可以把这些类型分为几个大类: 类型的归类: 存整数的 char,short,int,long,long long及所配套的unsigned,int*,int[]- 2.存浮点数的 float,double,float[]- 结构体(结构体在内存中的存储后面在进行讨论~) 整数在内存种的存储: 1.字节序 2.补码 内存窗口 调试模式下的内

  • C语言中的浮点数据类型

    目录 1. 处理带小数的数值 2. 浮点类型 3. 浮点类型的sizeof 1. 处理带小数的数值 我们来讨论一下类似于1.234567,0.00001,这类非整数的数据.我们先试试看,int能不能装这些数据呢? #include <stdio.h> int main() { int a = 1.234567; int b = 0.00001; int c = 365.12345; printf("%d\n", a); printf("%d\n", b)

  • 详解Python开发语言中的基本数据类型

    目录 1.Python的基本数据类型 2.整数类型的概念以及使用 2.1.整数类型的概念 2.2.使用Python操作整数类型 3.浮点数类型的概念以及使用 4.布尔类型的概念以及使用 1.Python的基本数据类型 数据类型想必大家都知道是什么含义,指的是输入数据的类型,任何数据都有明确的数据类型,例如我们输入100,这个数据就是整数类型,输入7.7这个数据就是浮点数类型,输入字母.汉字.字母加汉字的数据都是字符串类型. Python基本数据类型有三种: 整数类型:数字 浮点数类型:带小数点的

  • 深入解析C语言中常数的数据类型

    废话不多说,上代码 复制代码 代码如下: //编译环境:codeblocks+gcc#include <stdio.h>#include <stdint.h>int Fun(){    uint64_t y;    uint32_t x1, x2; //y = 3000 * 24000000 / 1000;//常数默认作为32位数据,临时运算结果也是32位,溢出错误    //y = (uint64_t)3000 * (uint64_t)24000000 / 1000;//常数强制

  • 详解易语言中的数据类型

    各种数据存放在磁盘或内存中都有其不同的存放格式,因此就存在不同的数据类型.了解各种数据的特性,对编程开发来说是十分重要. 程序中经常会进行一些运算,易语言中的运算都要使用运算符进行识别处理,并通过运算表达式来完成运算操作.程序中对各数据之间的关系的描述也要通过运算符. 1.易语言的数据类型 一个程序内部应包括两个方面的内容:1.数据的描述.2.操作步骤,即对程序动作的描述. 数据是程序操作的对象,操作的结果会改变数据的内容.打个比方:要做一道菜,做菜前先选择烹饪的原材料(即对数据进行描述),然后

  • C语言中的常量详解

    目录 C语言中的常量 字面常量 #define定义的标识符常量 枚举常量 C语言中的常量 C编程中的常量是一些固定的值,它在整个程序运行过程中无法被改变. 字面常量 字面常量是直接写出的固定值,它包含C语言中可用的数据类型,可分为整型常量,字符常量等.如:9.9,"hello"等就属于这一类常量. ##const修饰的常变量 有的时候我们希望定义这么一种变量:值不能被修改,在整个作用域中都维持原值.为了满足用户需求,C语言标准提供了const关键字.在定义变量的同时,在变量名之前加上c

  • Python语言中的数据类型-序列

    目录 一.什么是序列数据类型? 二.序列数据类型的基本操作 1.序列的通用方法 2.通过索引访问数据 3.同类型的序列进行拼接 4.判断序列成员 5.序列的排序操作 6.内置函数all()与any() 7.序列的拆分 三.列表 1.创建列表 2.向列表内添加数据 3.删除列表内的数据 三.元组 四.字符串 五.字节序列 前言:前面我们提到了Python数据类型中的内置数值类型与字符串类型.今天学习一下Python的序列数据类型,要知道的是在Python中没有数组这一数据结构,也没有提供直接创建数

  • 详解Go语言中的数据类型及类型转换

    目录 1.基本数据类型 2.基础数据类型转换 3.基本数据类型转为字符串 4.strconv的使用 5.字符串转为基础类型 1.基本数据类型 数据类型有很多,先研究一下基础的,例如:布尔型.数字类型.字符串类型. 数字类型有uint8.uint16.uint32.uint64.int8.int16.int32.int64(uint和int区别在于uint为无符号整数,即只支持正数,不支持负数形式) 数字浮点型有fload32.float64.complex64.complex126(后面两个均为

  • go语言中基本数据类型及应用快速了解

    目录 整数 特殊的整数类型 如果想确定int和uint的大小 溢出 浮点数 复数 布尔值 字符串 字符串的“长度”与遍历字符串的做法 字符串的“长度” 遍历字符串 Rune与Byte(字节) 字符串与字节slice的转换 字符串不可变 基本类型的值都是可比较的 数值的类型转换 运算符 常量 整数 按位长度分度分为:8位,16位,32位,64位. 对应有符号整数:int8,int16,int32,int64. 对应无符号整数:uint8,uint16,uint32,uint64. 计算最大数和最小

  • Go语言中基本数据类型的相互转换详解

    目录 基本数据类型的相互转换 基本语法 小知识 基本数据类型和string的转换 方法一 方法二 string和基本数据类型转换 基本数据类型的相互转换 Go在不同类型的变量之间赋值时需要显示转换,不能自动转换 基本语法 表达式 T(v): 将值v转换成类型T T就是数据类型: int32, int64, float32... v就是需要转换的变量 1.不考虑溢出的情况下,类型转换不会改变数值大小 var i int8 = 100 var n int32 = int32(i) fmt.Print

  • Swift语言中的函数学习教程

    函数是一个组织在一起语句集合,以执行特定任务.Swift 函数类似于简单 C 函数以及复杂的 Objective C 语言函数. 它使我们能够通过函数调用内部的局部和全局参数值. 像其他任何语言一样 swift 函数也遵循相同的步骤. 函数声明:它告诉编译器有关的函数的名称,返回类型和参数. 函数定义:它提供函数的实际主体. Swift 函数包含参数类型和返回类型. 函数定义 在Swift 语言中函数是由 "func" 关键字来定义.当一个新定义函数时,它可能需要一个或几个值作为函数输

随机推荐