double类型解析
来源:互联网 发布:现实有多残酷知乎 编辑:程序博客网 时间:2024/06/14 11:08
double类型存储规定:把浮点数化成小数点前只有1位的小数与2的指数的乘积的形式,存储小数点后的52位,2的指数及数的符号。
sizeof(double) // 8个字节
#include <stdio.h>//利用共用体的特点,所有类型共用一段最大的内存空间typedef union { double d; char byte[8];}BIT;int main(){ int i; BIT u; u.d = 10.2345; for(i = 0; i < 8; ++i) { //16进制输出 printf("%02x ",u.byte[i]); } putchar('\n'); return 0;}
输出结果:
计算机数据的读写方向为从右到左,即左高右低;
所以修改为:
40 24 78 10 62 4d d2 f2
转化为二进制:
0100 0000 0010 0100 0111 1000 0001 0000 0110 0010 0100 1101 1101 0010 1111 0010
前12位为2指数:0100 0000 0010 -> 1026
后52位小数部分:0100 0111 1000 0001 0000 0110 0010 0100 1101 1101 0010 1111 0010
当指数为0时,对应二进制位0011 1111 1111 -> 1023
所以上式对应二进制指数为1026 -1023 = 3;
double型小数点前只有1位1,所以剩下的52位小数部分
0100 0111 1000 0001 0000 0110 0010 0100 1101 1101 0010 1111 0010
结果为: 1.小数部分 * 2^指数部分;
1.0100 0111 1000 0001 0000 0110 0010 0100 1101 1101 0010 1111 0010
化为10进制数为:1.279312500000000074606987254810519516468048095703125
乘以 2 ^ 3得:
10.234500000000000596855898038484
验证浮点型的近似型,所以尽量不对浮点型进行== 和!= 判断,否则可能会产生意想不到的结果。
float类型基本类似,只是有8字节变为4个字节,博客链接
float类型存储
参考资料:《程序员入门必备 狂人C》
- double 类型 客户端解析
- double类型解析
- double类型解析
- json 解析double类型多出几位小数,利用NSDecimalNumber修复
- double类型赋值问题
- double类型相等判断
- mysql float double 类型
- double类型的讨论
- JAVA double 类型相加
- double类型逆向
- mysql float double 类型
- double类型显示问题
- double类型内存存储
- mysql float double 类型
- mysql float double 类型
- double类型数据范围
- double类型存储
- Double 类型 运算处理
- OC-8
- Git创建本地代码仓库及其命令行
- Specified key was too long; max key length is 767 bytes
- redis单机版的安装部署以及java实现
- EasyPR--开发详解(6)SVM开发详解
- double类型解析
- js三级级联
- 山东理工1835答案
- 自定义View
- iOS中代码创建UIView的时候,使用weak还是strong?
- 银行营业网点管理系统——implt包(BranchesDaoImpl )
- Unit02: 重载与缺省参数 、 内联与动态内存分配 、 引用 、 显式类型转换 、 类和对象
- 验证链接地址是否为http或者https开头的
- KNN近邻分类