2012-02-03 53 views
2

http://learnpythonthehardway.org/book/ex4.html我在学习Python,为什么在这个例子中使用了浮点数?

有一个额外的信用问题,问我来解释为什么浮点4.0使用的4

我明白,一个浮点用于准确性代替,但我无法捉摸为什么在这个例子中,无论如何都是必要的。

+2

它是用于“space_in_a_car”变量...以防万一,如果你喜欢的链锯,你可以将在汽车3.8人... – Macmade 2012-02-03 06:07:55

+1

由于儿童运输的平均数量为2.6。 – wim 2012-02-03 06:12:38

回答

4

实际上在这个特定的例子中似乎没有任何需要float而不是int的需要。如果你想用它来划分某些东西,它可能会产生影响,但这不会发生在这里。 (即使这样,它将取决于你是否使用Python 2或3,因为float division是3中的默认值)。

如果你看一下下面的评论,zedshaw(笔者)也承认这一点:

МихаилГруздев:为什么用于空间4.0?也许这是驱动程序变量值应该是浮点?

zedshaw:简单地介绍浮点作为一个小小的谜题。在数学上,练习没有太大意义,这只是练习。现在继续。

+0

感谢您发表了最有帮助的帖子。我已经知道整数和浮点数,而且我一直在关注这个想法,因为这个代码中出于某种特定原因必须是float。 – 2012-02-03 06:22:39

+0

不客气!你说得对,这个“额外的信用”问题似乎也会让我误解。我在页面上留言说的同样多。 – tzaman 2012-02-03 06:32:05

-1

整数运算的算术结果为整数。

>>> 3/2 
1 
1

浮点是因为用于在Python一个intint划分产生intinteger division)此处不意图。如果您将float除以intint除以float,则会得到float

例子:

4/3 
=> 1 
    4.0/3 
=> 1.3333333333333333 
    2*4/3 
=> 2 
    2*4.0/3 
=> 2.6666666666666665 
+2

但该变量不用于该示例代码中的除法... – Lalaland 2012-02-03 06:09:48

+0

准确地说,space_in_car只用于乘法运算。 – 2012-02-03 06:11:30

+0

是的。这样做是为了让分子稍后浮动。 – 2012-02-03 06:16:17

0

这是因为一些所谓的整数除法。基本上这意味着如果你分两个整数,结果数字必须是一个整数。因此,例如3/4将导致04/3将导致1。这是因为3/4在“真正的”数学会给你0.75并将0.75转换为整数,Python会截断浮点值,并给你留下0。

解决此问题的最简单方法是使用4.0而不是4 。将整数转换为浮点数并忽略整数除法,因为整数除以浮点数将产生浮点数。 3/4.0等于0.75就像你想要的那样。

相关问题