2008-09-22 55 views

回答

102

有三个选项:

>>> 4/float(100) 
0.04 
>>> 4/100.0 
0.04 

这是相同的行为C,C++,JAVA等,或

>>> from __future__ import division 
>>> 4/100 
0.04 

您还可以通过传递参数-Qnew Python解释器激活此行为

$ python -Qnew 
>>> 4/100 
0.04 

第二个选项将是Python 3.0中的默认选项。如果你想拥有旧的整数除法,你必须使用//运算符。

编辑:添加了关于-Qnew的部分,感谢ΤΖΩΤΖΙΟΥ

+1

也请添加python的可用性-Q new`命令行选项使您的答案更加完整。 – tzot 2008-09-23 09:26:16

+0

这给出了一个浮点值,而不是一个十进制值。看到雕文的答案。 – Jim 2008-09-23 15:19:50

+0

您也可以在源代码中使用`from __future__ import division`。 – 2012-03-23 04:56:39

1

尝试4.0/100

1

一个简单的路线4/100.0

4.0/100

3

你需要告诉Python使用浮点值,而不是整数。你可以简单地通过自己在投入使用小数点:

>>> 4/100.0 
0.040000000000000001 
7

使条款的一个或两个浮点数,就像这样:

4.0/100.0 

或者,打开此功能,这将是在Python 3.0默认情况下,“真师”,那你想要做什么。在你的模块或脚本的顶部,这样做:

from __future__ import division 
0

你不能获得通过将一个整数与另一个十进制值,你会得到永诺的整数方式(导致截断整数)。您至少需要一个值作为十进制数。

+0

请注意,如果您使用/,则在Python 3.0中不会出现这种情况。 – 2008-09-22 20:13:00

23

其他答案建议如何获得浮点值。虽然这wlil接近你想要什么,它不会是准确的:

>>> 0.4/100. 
0.0040000000000000001 

如果你真的想要一个十进制值,这样做:

>>> import decimal 
>>> decimal.Decimal('4')/decimal.Decimal('100') 
Decimal("0.04") 

这会给你一个对象正确地知道在基数10中的4/100是“0.04”。浮点数实际上是以2为底的,即二进制,而不是十进制。

3

你也可以看看Python的decimal包。这将提供很好的小数结果。

>>> decimal.Decimal('4')/100 
Decimal("0.04") 
-4

请考虑下面的例子

float tot=(float)31/7; 
+3

...这甚至不是Python。 – Moira 2017-04-13 15:50:14

1

在这里,我们下面

from __future__ import division 

print(4/100) 
print(4//100) 
-3

进口部给从未来图书馆两种可能的情况是这样的: