是否可以用二进制浮点表示法表示7x20.25?如果是,问题在于它是否符合标准?
答案 0 :(得分:1)
创建包含浮点指数的浮点数的可能性的理论答案是是,可以创建 - 数字的表示方式是符合惯例的问题。没有人会被阻止创建自己的约定。理论上甚至可以从浮点有效数和浮点指数浮点数创建浮点数(对于术语的解释见下文)。
更进一步,甚至可以推测用于连续有效数,指数和基数的多个浮点数级别。问题是它是否可行使用 - 我认为对于某些应用程序是的,它可能是一个有趣的选项,用于扩展范围同时保持浮点数的有限精度。解决这个问题的方向与开源GNU MPFR Library中使用的问题相反,其中有效数和指数仍然是积分,但精度和可表示的实数范围通过使用大整数来扩展。
如果大多数浮点实现必须接受这个数字,那意味着它应该符合标准,而答案是否。
根据IEEE-754 2008浮点运算标准:
在特定格式中可表示的有限浮点数集由以下整数参数确定:
- b =基数,2或10
- p =有效数字中的位数(精度)
- emax =最大指数e
- emin =最小指数e
对于所有格式,emin应为1 - emax。
正如开头所说,没有任何东西阻止任何人创建它自己的由整数有效数和浮点指数组成的浮点表示 - 甚至有效数和基数也可以是自定义的。但是,这种实现需要为它的浮点数运算提供支持。因此,如果问题是设置这样的数字而不是答案是肯定的,如果问题是它是否实用答案是肯定的再次。有关详细信息,请参阅GNU MPFR库实现。
答案 1 :(得分:1)
当前浮点格式旨在精确存储有理数的子集,特别是具有终止二进制分数表示的某些数字。 2^0.25
,二的第四个根,是一个无理数,是将它乘以任何有理数的结果,包括7x2ˆ0.25
您可以非常接近地将其近似为具有整数指数的常规浮点数。例如,在Java 7*Math.pow(2,0.25)
。
浮点数通常用作近似值,因此对于大多数情况来说这是一个可接受的解决方案。你有一个申请,这不是一个解决方案吗?
您还要问它是否符合标准。它肯定不符合IEEE 754.你还没有说明任何好处,并且考虑到它的复杂性,将其纳入标准会带来很大的好处。