首页 > 编程知识 正文

double类型定义,double类型用%什么表示

时间:2023-05-06 13:14:16 阅读:264018 作者:373

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》

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。