首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中使数字更精确?

如何在Python中使数字更精确?
EN

Stack Overflow用户
提问于 2013-10-23 14:51:13
回答 3查看 3.1K关注 0票数 3

目前我只是在学习Python的基础知识,我想作为一个学习练习,我应该试着写一些近似数字"e“的东西。不管怎样,它总是给出11位小数的答案,我希望它能给出更多的小数点后1000位。我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2013-10-23 14:57:07

你确定你需要让它们“更精确”吗?或者你只需要看到比Python默认显示更多的数字?

代码语言:javascript
复制
>>> import math
>>> math.pi
3.141592653589793
>>>
>>> '{0:0.2f}'.format(math.pi)
'3.14'
>>>
>>> '{0:0.30f}'.format(math.pi)
'3.141592653589793115997963468544'
>>>
>>> '{0:0.60f}'.format(math.pi)
'3.141592653589793115997963468544185161590576171875000000000000'

但是,请注意

浮点数通常在C中使用double实现;在sys.float_info中提供了有关运行程序的计算机的浮点数的精度和内部表示形式的信息

我向您保证,pi不会在48位数字后变为零:-)

票数 4
EN

Stack Overflow用户

发布于 2013-10-23 15:02:59

如果您希望它是一个精确到一千位的数字,简短的答案是您不能..

一种解决方法是,您可以使用decimal模块。下面是一个示例:

代码语言:javascript
复制
import decimal
a = decimal.Decimal('2387324895172987120570935712093570921579217509185712093')

然而,在本例中,a不再是一个数字。它只是decimal.Decimal类的一个实例。嗯,你仍然可以用它做一些数学运算。

票数 1
EN

Stack Overflow用户

发布于 2013-10-23 15:07:18

现在几乎所有的机器都使用IEEE-754浮点算术,并且几乎所有的平台都将Python浮点数映射到IEEE-754的“双精度”。

IEEE-754双精度表具有64位(8字节),小数有效数的52位以存储器格式出现,总精度约为16位十进制数字。

因此,要表示一个比这个精度更高的浮点数,你应该使用Decimal

代码语言:javascript
复制
import decimal
decimal.getcontext().prec = 100
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19534743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档