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

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语言入门到精通

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;...{ int i = 0; float ft = 0.0; utemp.fa = (float)123.56; ft = *(float*)utemp.farray; printf

4.4K20

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的值

2K30

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编译器们对优化递归调用一点都不反感,相反,它们还很喜欢干这件事。

6.7K108
领券