浮点数在计算机中存储方式  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. UPnP基本原理介绍

    http://blog.csdn.net/braddoris/article/details/41576515 随着计算机产业以及计算机网络技术的迅猛发展,越来越多嵌入式设备的出现和家庭网络的发展,实 ...

  2. LinkedList的实现原理

    转载:http://wiki.jikexueyuan.com/project/java-collection/linkedlist.html 概述 LinkedList 和 ArrayList 一样, ...

  3. CSS之盒子模型

    CSS核心内容 源文件目录: D:\Users\ylf\Workspaces\MyEclipse 10 标准流 盒子模型 浮动 定位 标准流/非标准流: 标准流:就是普通的 非标准流:实际工作中要打破 ...

  4. lua中特殊用法

    th> a=torch.zeros(,) [.0001s] th> a [torch.DoubleTensor of size 1x5] [.0001s] th> a[{,floor ...

  5. Redis的WEB界面管理工具phpRedisAdmin

    下载地址:http://down.admin5.com/php/75024.html 官方网址:https://github.com/ErikDubbelboer/phpRedisAdmin

  6. Python 2.7.9 Demo - isinstance

    #coding=utf-8 #!/usr/bin/python a = 'abc'; print isinstance(a, str);

  7. look

    CSS3新浪微博模板商店列表图片抖动特效-易玩稀有 私家飞碟 | ¥18.00 开通会员  免费使用 购买 远古生物 | ¥18.00 开通会员  免费使用 购买 天地撞击 | ¥18.00 开通会员 ...

  8. Create Custom Modal Dialog Windows For User Input In Oracle Forms

    An example is given below to how to create a modal dialog window in Oracle Forms for asking user inp ...

  9. 服务器端验证--验证框架验证required.

    struts2表单验证里field-validator type值一共可以取哪些?都什么含义? int 整数:double 实数:date 日期:expression 两数的关系比较: email E ...

  10. ABAP WRITE、WRITE TO、FORMAT语句

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...