是怎么漂浮点存储的?当这有什么关系?
-
09-06-2019 - |
题
在后续行动 这个问题, 它的出现,有些数字无法表示由浮点,在所有的,而是近似。
怎么浮点的数字存储?
是否有一个共同标准的不同尺寸的?
什么样的陷阱,我需要看如果我使用浮点?
他们是跨语言的兼容(即,什么样的转换做我需要应发送一个浮点数量从python程序C节目TCP/IP)?
-亚当
解决方案
如所提到的, 维基百科上的文章IEEE754 很好的展示了如何浮点数量被储存在大多数系统。
现在,这里有一些共同的问题:
- 最大的是你几乎从来没有想比较两个浮点数为平等的(或不平等).你会想到使用大超过/低于比较,而不是。
- 更多的作业你做一个浮点数目,更重要的四舍五入错误可以成为。
- 精确度是有限的大小小部分,因此可能不能够正确地添加编号,分隔的几个数量级。(例如,你不能加入1E-30 1E30.)
其他提示
一个彻底的解释的问题浮点数是由于在文章 什么每一个计算机科学家应该知道的浮点运算.
该标准是 IEEE754.
当然,还有其他装置存储数字,当IEE754是不够的。库Java这样的 BigDecimal
可用于大多数的平台和地图以及SQL的数类型。符号可用于不合理的数字和比率,不能准确地代表在二元或小的浮点可以储存为一个比率。
至于第二部分的问题,除非业绩和效率是重要的项目,那么我建议你转让的浮点的数据为串通过TCP/IP。这可以避免的问题,例如字节对准,将便于调试。
基本上,你需要什么担心在浮点数是有限数量的数字的精确度。这可能会导致问题时的测试平等,或者如果你的计划实际上需要更多位数的精确的比什么,数据的类型给你。
C++、良好的经验规则是,认为浮给你的7位数字的精确度,同时双给你15.此外,如果你有兴趣知道如何测试平等,你可以看看 此 问题线。
在跟进这个问题, 出现的一些数字不能 由浮点, 而是近似。
正确的。
怎么浮点的数字存储?是否有一个共同标准的不同尺寸的?
其他的海报已经提到的,几乎完全IEEE754及其后继者 IEEE754R.谷歌上搜索它给你千解释起来有点模式和他们解释说明。如果您还有问题要得到它,有两个仍然是常见的FP格式:IBM和DEC-VAX.对于一些深奥的机和编译器(BlitzBasic,TurboPascal)有一些 奇怪的格式。
什么样的陷阱,我需要看如果我使用浮点?他们是跨语言的兼容(即,什么样的转换做我需要处理 送一个浮点数量从python程序C节目TCP/IP)?
几乎没有,他们是跨语言的兼容。
非常罕见的发生的怪癖:
IEEE754定义sNaNs(南斯的信号)和qNaNs(安静南斯).前部分因为一个陷阱它的力量处理器以呼叫一个程序,如果装载。后一种人不要这样做。因为语言设计师讨厌的可能性,sNaNs中断他们的工作流程和支持他们执行的支持对处理例行程序,sNaNs几乎都是默默地转换成qNaNs.所以不依赖一个1:1的原始转换。但再次:这是非常罕见的情况下,才会出现Nan 都存在。
你可以有问题字节序(字节是在错误的顺序)如果文件不同的计算机之间是共用的。它是容易的事,因为你是得到南斯的数字。
数是分裂成三部分,标志、指数和分数,当时存在的二进制。
此 文章 题为"IEEE标准754浮点数"可能是有帮助的。说实话我并不完全肯定我很理解你的问题所以我不知道,这将是有益的,但我希望它会。
如果你真的很担心浮点四舍五入错误,大多数语言提供数据的类型,没有浮点错误。SQL服务器的具有小数和金钱的数据类型。.净具有小数的数据类型。他们不是无限的精度等BigDecimal在爪哇,但他们的精确到小数点的定义。所以你不必担心一美元的价值在美元4.58得到保存作为一个浮点值4.579999999999997
我记得是一个32位浮点存储使用24位为一个实际的数量,并将保持8位用作一个功率为10,确定其中的小数点。
我有点生疏的主题寿...