浮点数在计算机中存储方式  http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html

1. double:
  1bit(符号位) 11bits(指数位) 52bits(尾数位)

浮点数的十进制形式是,即十进制的科学计数法: a.xxx *10^n,

而在计算机中是用二进制的科学计数法表示:1.xxx * 2^n(*是二进制乘法 即移位)

指数位用来表示了n,尾数位表示的是小数部分xxx。

比如 8.25 ,二进制 100.01 ->1.0001*2^2

而指数有正负,所以double型最大值是2^1024 =  1.79E+308 ,比64位uint64_t 要大多了 ,这是因为损失了数据精度的:

uint64_t最大值转为double型:64bit的1->1.111(52个)*2^63 (在vs中实际转换后表示成了1.00*2^64,应该是因为最后11个bit 进了一位),

而完整无损失的表示应该是:1.111(52个)111(11个)*2^63

因为double的尾数只有52bit,所以后面的11bit的1是损失了的,整数 (1<<64)-1 到 (1<<64)-1 -( (1<<11) -1) 转换成double时是一样的结果

(vs调试中考虑了四舍五入,(1<<64)-1 到 (1<<64)-1 -( (1<<10) -1 转换结果一样)

也就是说64bit的整数,用double表示,(考虑四舍五入)误差可达1023(即double的分辨率只有1023,或许double a 与 a+1023 相等)

63bit 误差可达511 ....  ,54bit误差可达1,不超过53bit时,用double表示才没有误差。

double精度问题,数据范围的更多相关文章

  1. java float、double精度研究(转)

    在java中运行一下代码System.out.println(2.00-1.10);输出的结果是:0.8999999999999999很奇怪,并不是我们想要的值0.9 再运行如下代码:System.o ...

  2. Java Double 精度问题总结

    package Demo_1.Test_2; import java.math.BigDecimal; /** * @描述:Java Double 精度问题总结 * @详细描述:使用Java,doub ...

  3. Java面试官:兄弟,你确定double精度比float低吗?

    我有一个朋友,叫老刘,戴着度数比我还高的近视镜,显得格外的"程序员":穿着也非常"不拘一格",上半身是衬衣西服,下半身是牛仔裤运动鞋. 我和老刘的感情非常好,每 ...

  4. Java中关于 BigDecimal 的一个导致double精度损失的"bug"

    背景 在博客 恶心的0.5四舍五入问题 一文中看到一个关于 0.5 不能正确的四舍五入的问题.主要说的是 double 转换到 BigDecimal 后,进行四舍五入得不到正确的结果: public ...

  5. Java中double类型的数据精确到小数点后两位

    Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...

  6. double精度的坑与BigDecimal

    近期经常接触支付相关的功能,在开发及测试过程中,开始金额都使用的是double类型,而近期新进的需求存在支付时打折的情况,也就是会出现如 1.23元的情况,那么这时候问题来了,如果是直接使用1.23进 ...

  7. 输入三个double型的数据,放入到a,b,c三个变量中去,使用条件结构与交换逻辑将这三个变量中的值从小到大排列。

    import java.util.Scanner; public class C8{ public static void main(String []args){ /* 8.输入三个double型的 ...

  8. 对double数据类型的数据保留两位小数,并且进行四舍五入

    1.代码如下: /** * 对double数据类型的数据 保留两位小数,并且进行四舍五入 * @author Administrator */ public class Main { // 工具类 p ...

  9. 【Double】double精度问题和int、long除不尽取舍问题

    看了老半天,真心没搞懂,留下几篇文章,后面继续跟进吧.... 一.如何理解double精度丢失问题? - 知乎 https://www.zhihu.com/question/42024389/answ ...

随机推荐

  1. 2016年12月7日 星期三 --出埃及记 Exodus 21:2

    2016年12月7日 星期三 --出埃及记 Exodus 21:2 "If you buy a Hebrew servant, he is to serve you for six year ...

  2. 2016年10月13日 星期四 --出埃及记 Exodus 18:24

    2016年10月13日 星期四 --出埃及记 Exodus 18:24 Moses listened to his father-in-law and did everything he said.于 ...

  3. 2016年6月30日 星期四 --出埃及记 Exodus 14:27

    2016年6月30日 星期四 --出埃及记 Exodus 14:27 Moses stretched out his hand over the sea, and at daybreak the se ...

  4. static变量在php和java中的生命周期

    1. java的static变量伴随着java虚拟机的退出而消亡,java虚拟机运行期间,static变量一直存在 2. php的static变量只针对一次请求(一次php文件的执行),php文件执行 ...

  5. windows8运行php Composer出现SSL报错的问题

    这是没有安装CA证书导致的!!! CA证书下载地址:http://curl.haxx.se/docs/caextract.html 然后修改php.ini文件 openssl.cafile= D:/w ...

  6. 再论EM算法的收敛性和K-Means的收敛性

    标签(空格分隔): 机器学习 (最近被一波波的笔试+面试淹没了,但是在有两次面试时被问到了同一个问题:K-Means算法的收敛性.在网上查阅了很多资料,并没有看到很清晰的解释,所以希望可以从K-Mea ...

  7. Entity Framework 不支持DefaultValue

    http://stackoverflow.com/questions/18506088/entityframework-not-updating-column-with-default-value Y ...

  8. 分区格式化mkfs

    mkfs —  build a Linux filesystem 用法举例: mkfs.ext3  /dev/sdb1 #把sdb1格式化为ext3文件系统 也可以写成 mkfs -t ext3 /d ...

  9. Spring + JDBC 组合开发集成步骤

    1:配置数据源,如: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h ...

  10. HttpServletRequest学习

    package cn.request; import java.io.IOException; import java.io.PrintWriter; import java.io.Unsupport ...