2012-08-15 145 views
0

我有一个快速的问题。所以,假设我有一个非常大的数字,最多只有15位数字,我会接受输入并将其分配给两个变量,一个浮点数和一个双精度数,如果我要比较两个数字,您会如何比较它们?我认为双精度达到15位数字?和浮动8?那么,我只是简单地比较它们,而浮点数只包含8位数字并填充剩余的数字,或者我有浮点数来打印出所有15位数字,然后进行比较?另外,如果我被要求打印出浮点数,那么标准的做法是打印最多8位数字?这是它的最大精度比较float和double并打印它们

感谢

回答

0

大多数语言会做一些形式的推广方式,让你比较不相同的,但合理的相似类型。有关详细信息,您必须指出您所指的是哪种语言。

当然,比较浮点数的真正问题是由于舍入误差,结果可能是意外的。大多数数学上的等价不适用于浮点型Artihmetic,所以应该产生相同值的两个操作序列实际上可能会产生稍微不同的值(如果不小心的话,甚至可能会得到非常不同的值)。

编辑:至于印刷,“标准方式”是基于你所需要的。如果出于某种原因,您正在进行浮点数的货币计算,则您可能只想打印两位十进制数字。

0

在数字方面的思考可能是一个问题在这里。浮游物可以具有从负无穷到正无限的范围。在C#中,例如范围是±1.5×10^-45到±3.4×10^38,精度为7位。

此外,IEEE 754定义了浮动和双打。 这里是一个可能有帮助的链接http://en.wikipedia.org/wiki/IEEE_floating_point

-1

你的问题是正确的。不过,你要考虑你的方法。

无论在32位还是64位,浮点表示都不是为了比较数字的相等性。例如,断言2.0/7.0 == 60.0/210.0在CPU的视图中可能会也可能不会。从概念上讲,浮点本质上意味着不精确。

如果您想比较数字的相等性,请使用整数。再考虑最后一段的比例。断言2*210 == 7*60总是对的 - 注意那些是与以前相同的四个数字的整数版本,只与使用乘法而不是除法有关。有人怀疑你真正想要的是这样的。