2012-04-29 61 views
3

在Objective-C(Xcode)和Python(终端)中试过并且(1/6)*(66.900009-62.852596)两次计算为零。任何人都知道这是为什么?它不应该是0.26246吗?为什么“(1/6)*(66.900009-62.852596)”评估为零?

+5

请注意,在Python 3.x中,这是不正确的。 '/'是默认的除法,所以你可以得到预期的结果。你也可以通过'from __future__ import division'来模拟Python 2.x。 –

+0

只是FYI,除了下面的答案外,你甚至不需要尾随的零:'(1./6)'或'(1/6。)'就可以工作。 – alan

+0

谢谢,从来没有试过这个! –

回答

11

您正在做整数运算1/6,而1/6的底线是0。改为尝试1.0/6

+0

啊谢谢,这是做到了。傻我。 –

3

1/6是整数除法,它变为0.尝试使用1.0/6代替。

2

的避免做偶然的地板师带整数进口,在您的模块的顶部做一个from __future__ import division

>>> from __future__ import division 
>>> (1/6)*(66.900009-62.852596) 
0.6745688333333331 

future module负责将默认在Python 3

横空出世启用功能