首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在java中,浮点数和双精度数有多少有效位?

在java中,浮点数和双精度数有多少有效位?
EN

Stack Overflow用户
提问于 2012-11-25 00:09:53
回答 2查看 174.3K关注 0票数 86

一个浮点型有32个二进制数,而一个双精度型有64个二进制数吗?文档太难理解了。

是否所有位都转换为有效数字?还是小数点的位置占用了一些位?

EN

回答 2

Stack Overflow用户

发布于 2012-11-25 00:26:58

浮点数是使用指数形式编码的,这有点像m * b ^ e,也就是说,根本不像整数。您提出的问题在fixed point numbers的上下文中是有意义的。有许多可用的fixed point arithmetic libraries

关于浮点算术:小数位数取决于表示和数字系统。例如,有一些周期数(0.33333)没有十进制的有限表示,但有一个二进制表示,反之亦然。

同样值得一提的是,直到某一点的浮点数的差异确实大于1,即value + 1产生value,因为value + 1不能使用m * b ^ e编码,其中mbe的长度是固定的。小于1的值也会发生同样的情况,即所有可能的代码点都不具有相同的距离。

因此,不存在像定点数字那样的精确n数字的精度,因为并不是每个具有n十进制数字的数字都具有IEEE编码。

有一个几乎是强制性的文档,你应该读一下,它解释了浮点数:What every computer scientist should know about floating point arithmetic

票数 3
EN

Stack Overflow用户

发布于 2012-11-25 00:33:59

看看Float.intBitsToFloatDouble.longBitsToDouble,它们解释了位是如何对应浮点数的。具体地说,一个普通float的部分看起来像这样

代码语言:javascript
复制
 s * 2^exp * 1.ABCDEFGHIJKLMNOPQRSTUVW

其中A…W是23位-- 0和1s --表示二进制的分数-- s是+/- 1,分别用0或1表示,而exp是一个带符号的8位整数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13542944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档