在Python中的数学运算
Python新手和写一个简单的代码将华氏转换成Celcius。在Python中的数学运算
有人能告诉我为什么这两行代码给出不同的结果吗?
cConvert = (number - 32)/(9/5)
cConvert = (number - 32)/1.8
9/5 = 1.8但是我该如何编写代码而不必自己计算9/5?
感谢
如果您使用的是Python 2,整数除法会生成一个整数结果,所以您需要将一个或两个操作数转换为float
以获得所需的结果。在Python 3中,整数除法产生一个float
结果(即使结果是一个确切的整数),所以在Python 3中,不需要显式转换为float。
尝试以下操作:
cConvert = (number - 32)/(float(9)/5)
或者:
cConvert = (number - 32)/(9.0/5)
这应该给你你期待的结果,在这两个的Python 2和Python 3
您需要更改9或5成float
喜欢9.0/5或9/5.0,或两者兼而有之。如果不是,9/5
将返回结果的整数部分,1
在Python 2,这是一个int结果:
>>> 9/5
1
但是,这是一个浮动的结果:
>>> 9/5.0
1.8
作为是这样的:
>>> 9.0/5
1.8
所以在方程中添加.0
到opperands之一,使日操作发生为浮动。
假设这是Python 2中,您可以通过显式使用float
文字9./5
或9/5.
或9./5.
解决这一问题(你可以在.
后添加0
,如果你喜欢,但它没有必要在尾点本身使得float
文字),或者你可以移动到Py3语义。
from __future__ import division
到源文件to get Py3 division rules的顶部:你的代码,如果你添加作品完全一样写入。如果你想分区划分,你可以使用9 // 5
,否则,使用Py3分区时,int/int
总是导致float
。
课程你使用Python2.x
。
相关问题:
How can I force division to be floating point in Python
Python integer division yields float
在Python3
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 9/5
1.8
>>> 9//5
1
这是因为'9/5'结果在一个int。所以你可以通过使任何一个值浮动来改变返回类型 –