首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

float double取值范围_double float区别

符号位(S):1bit 指数位(E):11bit 尾数位(M):52bit double这里就类似float,只是double的长度更大,所以范围就更大,但规则是一样的。...另外,Java中无穷大表示为: Float.POSITIVE_INFINITY或Double.POSITIVE_INFINITY//表示正无穷大 Float.NEGATIVE_INFINITY或Double.NEGATIVE_INFINITY...f3 = (float) Math.pow(2,-149)//1.4E-45,小于-149,结果则为0.0 Float.MIN_VALUE //1.4E-45 double的取值同float: 负无穷...注意不能是 0/0 //NaN表示计算错误,具体出现情况,可以参考表中 //Float.NaN或 Double.NaN 也能直接表示NaN,NaN与其他数计算结果均为NaN,除了 Math.pow(Float.NaN...double 计算方式同floatdouble的尾数:52位, 2 − 52 2^{-52} 2−52=2.220446049250313E-16,最小是16位,但最小不是1.0E-16,所以精度是15

1.9K10

floatdouble的范围和精度

可能是数符加尾数占24位,指数符加指数占8位 -- float. 数符加尾数占48位,指数符加指数占16位 -- double....1、数值范围 floatdouble的范围是由指数的位数来决定的。...float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) double: 1bit(符号位) 11bits(...指数位) 52bits(尾数位) 于是,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。...float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字; double:2^52 = 4503599627370496

27.2K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    谈谈MySQL如何选择float, double, decimal

    前言 我们知道在MySQL中有3种类型可以表示实数,分别是float,double和decimal。关于如何合理得使用这三种类型,网上的答案也层出不穷。...但是究竟该选择哪一种类型,好像并没有统一的答案,接下来,将通过一个例子来说明什么情况下选择float,什么情况下选择double,什么情况下选择decimal。...官方怎么看数据丢失 首先遇到问题,第一想到的就是官方找答案,我们翻阅官方文档,关于floatdouble有这样一段描述 For FLOAT, the SQL standard permits an optional...采用floatdouble本来就是不准的!! 实数保存和分配存储长度的关系 在MySQL官方里有这样一句话,数据准确度取决于分配给数据类型存储的长度。...选择float或者double或者decimal有时候也要看场景,比如我们可以用double存储一个小商铺的季度营业额(几千万),单独用double存储的时候没有问题,当多个季度,多个年份算总3年内的营业额是

    4.5K42

    公司同事用floatdouble,结果导致..

    BigDecimal 阿粉相信大家对这个肯定不陌生,只要你公司的业务中涉及到一些比较精确的数字的时候,都会使用 BigDecimal,而不会去使用 Floatdouble,并且在数据库做设计的时候...,如果是小数类型,也是会让你使用 BigDecimal 而不是 floatdouble。...floatdouble float 单精度浮点数在机内占 4 个字节,用 32 位二进制描述 double 双精度浮点数在机内占 8 个字节,用 64 位二进制描述 注意float型定义的数据末尾必须有...阿里手册定义 数据库 小数类型为 decimal,禁止使用 floatdouble。 在存储的时候,floatdouble 都存在精度损失的问题,很可能在比较值的时候,得到不正确的 结果。...这就是为什么有些面试官在面试基础的时候,很多次会问,floatdouble 都会丢失精度,BigDecimal 会丢失精度么?为什么?

    80640

    浮点类型(floatdouble)在内存中如何存储?

    在编程中,浮点类型数据主要用于表示小数,例如Java或C++中的floatdouble类型,Golang中的float32、float64类型。...任何数字在计算机中都是用0和1二进制来表示,对于float(占据4字节)和double(占据8字节)类型,又是如何使用一串0和1表示出来呢?...这就是“浮点数有精度问题”的根源之一,你在代码中声明一个变量double a = 0.6;时,计算机底层其实是无法精确存储那个无限循环二进制数的,只能存一个四舍五入(准确说应该是零舍一入,毕竟是二进制)...接下来依然是举例说明: image.png 如果你在程序中声明float a = 0.6,那么实际上a变量在内存中占据的4个字节的值为0x3F19999A。...另外值得注意的是,虽然float a=0.6在内存中被存为了数字0x3F19999A,但是如果我们把4个字节看作是长度为4的byte数组,不同的计算机对这个数组有不同的存储方式。

    21K336

    浮点型变量(floatdouble)和BigDecimal的使用

    1、浮点型变量(floatdouble) 带小数的变量在Java中称为浮点型,Java的浮点型有两种:floatdoublefloat类型代表单精度浮点数,占4个字节、32位。...Java语言的浮点类型默认是double类型,如果希望Java把一个浮点类型值当成float类型处理,应该在这个浮点类型值的后面紧跟F或f。...例如3.14代表一个double类型的值,占64位的内存空间;3.14F才表示一个float类型的值,占32位的内存空间。...正无穷大通过DoubleFloat类的POSITIVE_INFINITY表示;负无穷大通过DoubleFloat类的NEGATIVE_INFINITY表示,非数通过DoubleFloat类的NaN...总结: 老鸟建议:浮点类型floatdouble的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

    3.5K31

    Java面试官:double精度真的比float低吗?

    东丰:“当然用float啊,精确度比double高嘛。” 老刘:“东丰,你确定double精度比float低吗?”...东丰:“那当然啊,double只精确到小数点后两位,double这个单词的意思不就是二的意思吗?” 老刘:“东丰,你右手边刚好有一本《Java核心技术卷1》,你翻到第35页,看一下。”...在金融计算中,必须要使用BigDecimal,doublefloat都不适合。因为单单一个精度问题就能把人整晕了。”...doublefloat提供了快速的运算,然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值,这就导致了你看到的不正确的结果。’”...东丰:“我在博客园上曾看到一个有意思的投票统计——选出平常工作时自己认为最难的事情,选项大致有:” 写各种文档 客户沟通 预估工作量 给变量命名 “投票结果完全出乎我的意料,排在第一的竟然是‘给变量命名

    1.3K30

    一篇文章讲明白doublefloat丢失精度的问题

    二进制就是要算 1 ÷ 1010最终0.1转二进制是:0.0001100110011001100110011001100110011001100110011001101 图片 4.转换成对应精度数值 float...,以0.1为例,你以为你传了一个double类型的0.1,最后会返回一个值为0.1的BigDecimal吗?...BigDecimal.valueOf(double val) 第二种构造方式已经足够优秀,可你还是想传入一个double值,怎么办呢?...官方其实提供给你思路并且实现了它,可以使用Double.toString(double val)先将double值转为String,再调用第二种构造方式,你可以直接使用静态方法:valueOf(double...总结:将double转为BigDecimal的时候,需要先把double转换为字符串,然后再作为BigDecimal(String val)构造函数的参数,这样才能避免出现精度问题。

    1.8K30

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

    东丰:“当然用float啊,精确度比double高嘛。” 老刘:“东丰,你确定double精度比float低吗?”...东丰:“那当然啊,double只精确到小数点后两位,double这个单词的意思不就是二的意思吗?” 老刘:“东丰,你右手边刚好有一本《Java核心技术卷1》,你翻到第35页,看一下。”...在金融计算中,必须要使用BigDecimal,doublefloat都不适合。因为单单一个精度问题就能把人整晕了。”...doublefloat提供了快速的运算,然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值,这就导致了你看到的不正确的结果。’”...东丰:“我在博客园上曾看到一个有意思的投票统计——选出平常工作时自己认为最难的事情,选项大致有:” 写各种文档 客户沟通 预估工作量 给变量命名 “投票结果完全出乎我的意料,排在第一的竟然是‘给变量命名

    67950
    领券