http://learnpythonthehardway.org/book/ex4.html我在学习Python,为什么在这个例子中使用了浮点数?
有一个额外的信用问题,问我来解释为什么浮点4.0使用的4
我明白,一个浮点用于准确性代替,但我无法捉摸为什么在这个例子中,无论如何都是必要的。
http://learnpythonthehardway.org/book/ex4.html我在学习Python,为什么在这个例子中使用了浮点数?
有一个额外的信用问题,问我来解释为什么浮点4.0使用的4
我明白,一个浮点用于准确性代替,但我无法捉摸为什么在这个例子中,无论如何都是必要的。
实际上在这个特定的例子中似乎没有任何需要float而不是int的需要。如果你想用它来划分某些东西,它可能会产生影响,但这不会发生在这里。 (即使这样,它将取决于你是否使用Python 2或3,因为float division是3中的默认值)。
如果你看一下下面的评论,zedshaw(笔者)也承认这一点:
МихаилГруздев:为什么用于空间4.0?也许这是驱动程序变量值应该是浮点?
zedshaw:简单地介绍浮点作为一个小小的谜题。在数学上,练习没有太大意义,这只是练习。现在继续。
感谢您发表了最有帮助的帖子。我已经知道整数和浮点数,而且我一直在关注这个想法,因为这个代码中出于某种特定原因必须是float。 – 2012-02-03 06:22:39
不客气!你说得对,这个“额外的信用”问题似乎也会让我误解。我在页面上留言说的同样多。 – tzaman 2012-02-03 06:32:05
整数运算的算术结果为整数。
>>> 3/2
1
浮点是因为用于在Python一个int
由int
划分产生int
(integer division)此处不意图。如果您将float
除以int
或int
除以float
,则会得到float
。
例子:
4/3
=> 1
4.0/3
=> 1.3333333333333333
2*4/3
=> 2
2*4.0/3
=> 2.6666666666666665
但该变量不用于该示例代码中的除法... – Lalaland 2012-02-03 06:09:48
准确地说,space_in_car只用于乘法运算。 – 2012-02-03 06:11:30
是的。这样做是为了让分子稍后浮动。 – 2012-02-03 06:16:17
这是因为一些所谓的整数除法。基本上这意味着如果你分两个整数,结果数字必须是一个整数。因此,例如3/4
将导致0
和4/3
将导致1
。这是因为3/4
在“真正的”数学会给你0.75并将0.75转换为整数,Python会截断浮点值,并给你留下0。
解决此问题的最简单方法是使用4.0而不是4 。将整数转换为浮点数并忽略整数除法,因为整数除以浮点数将产生浮点数。 3/4.0
等于0.75
就像你想要的那样。
它是用于“space_in_a_car”变量...以防万一,如果你喜欢的链锯,你可以将在汽车3.8人... – Macmade 2012-02-03 06:07:55
由于儿童运输的平均数量为2.6。 – wim 2012-02-03 06:12:38