为什么我从 Python Interpreter (2.7.6) 和计算器得到不同的结果?
Why do I get different results from Python Interpreter (2.7.6) and a calculator?
我有以下公式:
SZT = SZ0 + (((SZ1 - SZ0) / (WMZ1 - WMZ0)) * (WMZT - WMZ0))
示例:
86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531))
当我使用 python 解释器 (2.7.6) 进行计算时,我得到了这个结果:
86266
当我使用计算器时(例如Google)我得到了这个结果:
168471.066239
我假设第二个是正确的结果。
Python中的计算有什么问题?
基本上Python 2.7
和3.3
的计算是不同的。
Python 3.3 return 0.1
对于 1/10
,而 Python 2.7 return 0
。您可以使用 __future__
启用新的除法运算符
>>> from __future__ import division
>>> print(86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531)))
168471.066239
与python版本和除法运算符有关
示例:
使用 2.7:
Python 2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
x = 86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531))
print(x)
86266.0
使用python 3.3:
x = 86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531))
print(x)
168471.066239
我有以下公式:
SZT = SZ0 + (((SZ1 - SZ0) / (WMZ1 - WMZ0)) * (WMZT - WMZ0))
示例:
86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531))
当我使用 python 解释器 (2.7.6) 进行计算时,我得到了这个结果:
86266
当我使用计算器时(例如Google)我得到了这个结果:
168471.066239
我假设第二个是正确的结果。
Python中的计算有什么问题?
基本上Python 2.7
和3.3
的计算是不同的。
Python 3.3 return 0.1
对于 1/10
,而 Python 2.7 return 0
。您可以使用 __future__
>>> from __future__ import division
>>> print(86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531)))
168471.066239
与python版本和除法运算符有关
示例:
使用 2.7:
Python 2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
x = 86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531))
print(x)
86266.0
使用python 3.3:
x = 86266 + (((168480 - 86266) / (703786 - 510531)) * (703765.0 - 510531))
print(x)
168471.066239