在后续行动 这个问题, 它的出现,有些数字无法表示由浮点,在所有的,而是近似。

怎么浮点的数字存储?

是否有一个共同标准的不同尺寸的?

什么样的陷阱,我需要看如果我使用浮点?

他们是跨语言的兼容(即,什么样的转换做我需要应发送一个浮点数量从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标准为二进制浮点运算(IEEE754)

数是分裂成三部分,标志、指数和分数,当时存在的二进制。

文章 题为"IEEE标准754浮点数"可能是有帮助的。说实话我并不完全肯定我很理解你的问题所以我不知道,这将是有益的,但我希望它会。

如果你真的很担心浮点四舍五入错误,大多数语言提供数据的类型,没有浮点错误。SQL服务器的具有小数和金钱的数据类型。.净具有小数的数据类型。他们不是无限的精度等BigDecimal在爪哇,但他们的精确到小数点的定义。所以你不必担心一美元的价值在美元4.58得到保存作为一个浮点值4.579999999999997

我记得是一个32位浮点存储使用24位为一个实际的数量,并将保持8位用作一个功率为10,确定其中的小数点。

我有点生疏的主题寿...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top