比较float和double并打印它们

时间:2012-08-15 16:59:05

标签: double

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

感谢

3 个答案:

答案 0 :(得分:0)

大多数语言都会进行某种形式的促销,以便您比较不相同但相当类似的类型。有关详细信息,您必须指明您所指的语言。

当然,比较浮点数的真正问题在于,由于舍入错误,结果可能是意外的。大多数数学等价都不适用于浮点艺术,因此,应该产生相同值的两个操作序列实际上可能会产生略微不同的值(如果你不小心的话,甚至是非常不同的值)。

编辑:对于打印,“标准方式”基于您的需要。如果由于某种原因,您正在以浮点进行货币计算,那么您可能只想打印2位小数。

答案 1 :(得分:0)

根据数字思考可能是一个问题。浮点数的范围可以从负无穷大到正无穷大。例如,在C#中,范围为±1.5×10 ^ -45到±3.4×10 ^ 38,精度为7位。

此外,IEEE 754定义了浮点数和双精度数。 这是一个可能有助于http://en.wikipedia.org/wiki/IEEE_floating_point

的链接

答案 2 :(得分:-1)

你的问题是正确的。但是,你想要考虑你的方法。

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

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