double类型解析
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类型解析相关推荐
- Gson将字符串转map时,int默认为double类型
gson能够将json字符串转换成map, 但是在转成map时, 会默认将字符串中的int , long型的数字, 转换成double类型 , 数字会多一个小数点 , 如 1 会转成 1.0 Gs ...
- Java中double类型四舍五入的方法总结
代码: double a = 13.245; //方法一: BigDecimal bd= new BigDecimal(a); Double b = bd.setScale(2, BigDecimal ...
- Gson转换错误导致Int变为Double类型
情况说明 需要解析的json {"status": 200,"msg": "OK","data": [{"id ...
- java double转换符_java中字符串怎么转换成double类型
展开全部 public class Demo { public static void main(String[] args) { Demo demo = new Demo(); String str ...
- Java中比较两个Double类型数据的大小
在java中int类型比较可以用"==",而double类型的数据不能用"= ="比较,否则得到永不相等的结果. 一般可以Double的doubleToLong ...
- java中double类型精度丢失问题及解决方法
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源: https://blog.csdn.net/yacolsp ...
- double类型数值计算出现误差的解决办法
因为公司做的项目几乎都跟金钱.货币有关,所以对数字精确度有相当高的要求,而在开发和维护的时候自然经常会涉及到数值的计算. 但是在测试人员测数值的时候数值跟客户提供的数据比对又总是有差异,基本都是±1块 ...
- 转载——C语言中float,double类型,在内存中的结构(存储方式)
最近在做一个数据格式分析和转换的项目,第一次接触底层的二进制代码存储,看的一头雾水,看到这个帖子后对于在Windows系统下数据的存储方式有了更多的了解,将原文分享一下: 原文地址为http://ww ...
- double类型怎么取余_数据类型和运算符
数据类型和运算符 1.进制 1.1文件存储单位 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 . 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成 ...
最新文章
- 深入理解argparse模块中的add_argument的参数(如action等)
- AI实时特效,魔幻修图,Adobe Photoshop相机拯救PS菜鸟
- ubuntu下执行ulimit返回“不允许的操作”,问题解决思路
- java和tornado_TornadoJ
- CF思维联系– Codeforces-988C Equal Sums (哈希)
- C#基础之如何判断两个文件内容是否相同
- 1003 阶乘后面0的数量
- workerman高并发异步mysql_workerman怎么实现高并发
- 软件工程导论 05章总体设计
- 4.ID主键生成策略
- HDU 4931 Happy Three Friends(水)
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_08-CMS需求分析-CMS页面管理需求...
- 漫步微积分二十五——面积问题
- 100G多模光模块介绍及应用
- 电影下载的TS TC版
- MOV AX,BX 与 MOV AX,[BX] 区别
- 如何治好这quot;看见别人好就不幸…
- DTCC呼吁银行和监管机构帮助解决区块链安全问题
- 什么是支撑位和阻力位
- 大家看看这个vmp壳如何下手脱壳?
热门文章
- python抢票代码_五一要来了,教你用Python自动抢火车票,附源码
- mysql数据库能被非法下载吗_如何防止Access数据库被下载
- 王者荣耀PVP网络游戏 之【 百里守约指南】:引申话题#游戏同步机制(cs状态同步、帧同步)
- 《OS:PV操作 - 读者写者问题》
- 2014年移动互联网流量趋势
- 互联网晚报 | 1/31 星期二 |​ 四川回应生育登记取消结婚限制;光线传媒股价大跌;LVMH老板放狠话坚决打击代购行为...
- R语言dplyr包:高效数据处理函数(filter、group_by、mutate、summarise)
- python编程100例海绵宝宝-python中list方法详解说明
- elementui的select无法默认选中值
- Vim使用Vundle安装代码补全插件(YouCompleteMe)