我正在编写一个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,但是当我打印结果时,它们似乎也是按步骤绘制,而不是顺利.
如果有人能指出我正确的方向来解决这个问题,我将非常感激 - 谢谢.
如何尝试Decimal模块?
In [2]: import decimal
In [3]: d = decimal.Decimal('0.123456789101997')
In [4]: print d
0.123456789101997
Run Code Online (Sandbox Code Playgroud)
使用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)
| 归档时间: |
|
| 查看次数: |
27213 次 |
| 最近记录: |