python中需要更多小数位

use*_*817 3 python

我正在编写一个python代码,需要将数字评估到很多小数位 - 大约14或15.

我希望结果能够顺利增加,例如:

0.123456789101997
0.123456789101998
0.123456789101999
0.123456789102000
0.123456789102001
Run Code Online (Sandbox Code Playgroud)

但我似乎只是将数字(当我打印出来时)到12位小数,所以我的数字实际上是跳跃的:

0.123456789101
0.123456789101
0.123456789101
0.123456789102
0.123456789102
Run Code Online (Sandbox Code Playgroud)

起初,我假设这个数字被列在幕后的更多小数位,但是只打印到12,但是当我打印结果时,它们似乎也是按步骤绘制,而不是顺利.

如果有人能指出我正确的方向来解决这个问题,我将非常感激 - 谢谢.

wai*_*kuo 8

如何尝试Decimal模块?

In [2]: import decimal

In [3]: d = decimal.Decimal('0.123456789101997')

In [4]: print d
0.123456789101997
Run Code Online (Sandbox Code Playgroud)


Ash*_*ary 8

使用repr(),print使用str()将十进制数字减少到12以使输出用户友好.

In [17]: a=0.123456789101997

In [18]: str(a)
Out[18]: '0.123456789102'

In [19]: repr(a)
Out[19]: '0.123456789101997'
Run Code Online (Sandbox Code Playgroud)

或字符串格式:

In [21]: "{0:.15f}".format(a)
Out[21]: '0.123456789101997'
Run Code Online (Sandbox Code Playgroud)


小智 8

为此,您可以选择使用模块十进制

您需要导入模块。

>>> from decimal import *
Run Code Online (Sandbox Code Playgroud)

然后,您需要通过调用 getcontext() 函数来指定您需要的小数点数。以下代码要求 25 个小数点。

>>> getcontext().prec = 25
Run Code Online (Sandbox Code Playgroud)

然后,您需要指定您的算术。以下代码确定最多 25 个小数点的 pi 的近似值。

>>> Decimal(22) / Decimal(7)
Run Code Online (Sandbox Code Playgroud)

输出是

>>> Decimal('3.142857142857142857142857')
Run Code Online (Sandbox Code Playgroud)