在Python中的数学运算

问题描述:

Python新手和写一个简单的代码将华氏转换成Celcius。在Python中的数学运算

有人能告诉我为什么这两行代码给出不同的结果吗?

cConvert = (number - 32)/(9/5) 

cConvert = (number - 32)/1.8 

9/5 = 1.8但是我该如何编写代码而不必自己计算9/5?

感谢

+1

这是因为'9/5'结果在一个int。所以你可以通过使任何一个值浮动来改变返回类型 –

如果您使用的是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./59/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