2012-04-29 6 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

以下の答えに加えて、 '(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

にデフォルトで判明される機能を有効にする責任があります
関連する問題