首页
学习
活动
专区
圈层
工具
发布

C语言浮点数float类型的秘密

1 前言 我们在学习 C 语言时,通常认为浮点数和小数是等价的,并没有严格区分它们的概念,这也并没有影响到我们的学习,原因就是浮点数和小数是绑定在一起的,只有小数才使用浮点格式来存储。...其实,整数和小数可以都使用定点格式来存储,也可以都使用浮点格式来存储,但实际情况却是,C 语言使用定点格式存储整数,使用浮点格式存储小数,这是在 “数值范围” 和 “数值精度” 两项重要指标之间追求平衡的结果...比方对于指数 6,float 与 double 类型偏移后的值分别为: float : 127 + 6 = 133 double:1023 + 6 = 1029 4 实例 浮点数19.625用float...5 float与double范围和精度 范围 float和double的范围是由指数的位数来决定的。...更多案例可以go公众号:C语言入门到精通

5.4K2219
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言:十六进制(HEX)和浮点类型(float、double)转换

    C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f...如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。...其中float的存储方式如下图所示: 而双精度的存储方式为: 了解了基本概念后咱就开始代码实现吧~ 1、浮点类型转换为十六进制 方法1:用地址用指针 #include "stdio.h" int main...(void) { float fa = 123.56; char farray[4] = {0}; *(float*)farray = fa; printf("%f\n",*(float*...[4]; }utemp; int main(void) { int i = 0; float ft = 0.0; utemp.fa = (float)123.56; ft = *(float

    17.9K20

    C语言将float拆分为4个hex传输与重组

    分步测试 float型的2进制形式 float的计算机中占用4个字节,具体是如何在计算机中存储的可以参考上一篇笔记:C语言打印数据的二进制格式-原理解析与编程实现,上次的int数据打印2进制的函数这里也可以用来测试...查看float的每个字节内容(16进制): 9c,c4,78,40 重组后的float的值:3.887000 数据重组后可以还原,方法是可以的。...test_int_to_4hex(b); 结果: 传入的int的值:-85776553 查看int的每个字节内容(16进制): 57,27,e3,fa 重组后的int的值:-85776553 完整测试代码...[a] p2:d750f695, 196(c4) [a] p3:d750f696, 120(78) [a] p4:d750f697, 64(40) 传入的float的值:3.887000 查看float...的每个字节内容(16进制): 9c,c4,78,40 重组后的float的值:3.887000 该方法也有可以传输int,因为float和int在计算机中都是占4个字节,测试如下: 传入的int的值

    2.4K30

    C语言趣味代码(一)

    C语言相关知识点的博客和大家分享完了,接下来我想开始数据结构相关的博客,在此之前呢,有的小伙伴问过我学完C语言的相关知识,我能干些什么呢?只有刷题吗?...这不禁让我反思:在我们学习的过程中,我们所有学习时用到的书籍都是围绕某一知识点介绍、拓展,千篇一律的示例代码,好像从没出现一些新颖的代码。...所以我想用3篇左右的博客跟大家分享一下用我们学过的知识实现的有趣代码,然后再开始后面的数据结构的博客。 1. 心算训练 什么是心算呢?...c = clock(); printf("程序从开始到结束运行了%.1f秒\n", (double)c / CLOCKS_PER_SEC); 上面这部分代码把c强制类型转换成了double型,来求出经过的秒数...=a+b+c);  在上面的代码中,为了将处理暂停一段时间,我们使用了sleep函数: int sleep(unsigned long x) { clock_t c1 = clock(), c2;

    13410

    C语言趣味代码(五)

    我想以此篇结束关于C语言的博客,因为在C语言拖得越久越不能给大家带来新的创作,在此我也相信大家对C语言已经有了一个新的认知。...英语练习软件 1.1 单词显示软件 在编写英语学习软件之前,我们先来编写一个只能随机显示单词的程序,我们看下面的代码: #include #include #include...cptr[c[i]] : eptr[c[i]]); printf(":"); } int make_cand(int c[], int n)//生成选项并返回正确答案的下标 { int i; c[...sw:题目的语言(英文/中文) 参数sw的值表示用来出题的单词的语言。若用的是英语,则sw为1,若为中文,则sw为0。for语句 中则显示与题目相反的单词。...cptr[c[i]] : eptr[c[i]]); printf(":"); } int make_cand(int c[], int n) { int i, j, x; c[0] =

    8510

    C语言代码优化方案

    不好的代码: float a, b, c, d, e, f; 。。。 e = b * c / d; f = b / d * a; 推荐的代码: float a, b, c, d, e, f; 。。。...const float t(b / d); e = c * t; f = a * t; 不好的代码: float a, b, c, e, f; 。。。...e = a / c; f = b / c; 推荐的代码: float a, b, c, e, f; 。。。...+ temp->dog; 一些老的C语言编译器不做聚合优化,而符合ANSI规范的新的编译器可以自动完成这个优化,看例子: float a, b, c, d, f, g; 。。。...9、采用递归 与LISP之类的语言不同,C语言一开始就病态地喜欢用重复代码循环,许多C程序员都是除非算法要求,坚决不用递归。事实上,C编译器们对优化递归调用一点都不反感,相反,它们还很喜欢干这件事。

    7.9K108

    C语言趣味代码(三)

    我们可以利用编程环境单独提供的函数(C语言标准库中未定义的函数)来解决这个问题。首先我们分成以下两个环境来学习,之后再把他们结合在一起。...此时我们需要用到Visual C++等编程环境中特有的getch函数和putch函数。...函数名 putch 头文件 #include 格式 int putch(int c); 功能 在画面上显示字符c(在一些特殊的编程环境中,如果c时换行符就只换行而不进行返回操作) 返回值...显示成功后返回输出的字符c,错误则会返回EOF 在上面的代码中只有当ch(询问是否再来一次时输入的字符)是能显示的字符时,才会用putch函数来显示该字符。...Curses库有单独的输出机制,因此规格和C语言标准库的printf函数和putchar函数等兼容性不强,大家尤其需要注意以下两点: 换行符的操作不同:即便使用printf函数和putchar函数输出换行符

    9810
    领券