在python中如何得到小数点?

2024-05-23 20:46:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在一次真正超现实的经历中,我花了20分钟完成了一项我认为需要20秒的任务。

我想用三位或三位以上的小数。我不能得到任何超过一个地方,即使在那种情况下,这是胡说八道。

例如,我无法让1/3显示为00.0以外的任何内容。

通过谷歌搜索我找到了Decimal,但Decimal也未能帮上忙。

请结束这种折磨,告诉我要做什么才能让1/3.333的身份出现!

编辑谢谢大家把它清理干净!显然,计算机科学家发明了一种叫做整数除法的方法来迷惑和激怒数学家。谢谢你的好意,驱散了我的困惑。


Tags: 方法编辑内容地方计算机情况身份整数
3条回答

在Python 2中,1/3执行整数除法,因为两个操作数都是整数。你需要做浮动分割:

1.0/3.0

或:

from __future__ import division

这将使/做实数除法和//做整数除法。这是Python 3的默认设置。

如果你除以2个整数,你将得到一个截断的整数结果(即,结果的任何小数部分被丢弃),这就是为什么

 1 / 3

给你:

 0

为了避免这个问题,至少需要有一个操作数是浮点。e、 例如,1.0 / 31 / 3.0或(当然)1.0 / 3.0将避免整数truncation。顺便说一下,这种行为并不是Python独有的。

Edit:如@Ivc在下面的有用注释中所述,如果整数操作数中有一个是负的,则结果是floor()ed,请参阅this article了解原因)。

此外,对于数字的内部外部抑制可能存在一些混淆。数字就是它,但我们可以确定它的显示方式。

您可以使用格式化指令控制外部表示。例如,数字可以在小数点后显示5位,如下所示:

n = 1/3.0

print '%.5f' %n
0.33333

得到小数点后15位。

print '%.15f' %n
0.333333333333333

最后,使用.format()函数格式化字符串/数字有一种“新的和改进的”方法,这种方法可能比我上面展示的%格式要长得多。例如:

print 'the number is {:.2}'.format(1.0/3.0)

会给你:

the number is 0.33

你的值必须是浮点

In [1]: 1/3
Out[1]: 0

In [2]: 1/3.0
Out[2]: 0.33333333333333331

或者

In [1]: from __future__ import division

In [2]: 1/3
Out[2]: 0.33333333333333331

相关问题 更多 >