首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得正确的十进制结果

如何获得正确的十进制结果
EN

Stack Overflow用户
提问于 2017-03-20 00:58:51
回答 3查看 127关注 0票数 2

我正在编写一个程序来搜索小数基中整数的重复表示。因此,我不得不这样做:

代码语言:javascript
复制
1.1**7

等于1.9487171。然而,python自动将结果表示为浮点数,而给定的值是精确的。这就是我所需要的,这与舍入浮点数不一样。我还必须允许程序指定小数点有多少位。我试过使用十进制模块,但不能完全让它工作。做这件事最好的方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-20 01:12:44

十进制模块会给出准确的结果:

代码语言:javascript
复制
>>> Decimal('1.1') ** 7
Decimal('1.9487171')

对于非十进制基,分数模将执行精确的算术.不过,唯一的问题是输出是小数形式,而不是表示您似乎想要的十进制表示法(可能带有重复的、不终止的序列):

代码语言:javascript
复制
>>> Fraction(3, 7) ** 5
Fraction(243, 16807)
>>> Context(prec=200).divide(243, 16807)
Decimal('0.014458261438686261676682334741476765633367049443684179211043017790206461593383709168798714821205450110073183792467424287499256262271672517403462842863092758969477003629440114238115071101326828107336229')
票数 2
EN

Stack Overflow用户

发布于 2017-03-20 02:36:58

分数基

听起来像fractions,不是吗?

代码语言:javascript
复制
>>> import fractions
>>> fractions.Fraction(11, 10) ** 7
Fraction(19487171, 10000000)
>>> fractions.Fraction(13, 11) ** 7
Fraction(62748517, 19487171)
票数 2
EN

Stack Overflow用户

发布于 2017-03-20 01:17:21

你试过在容忍范围内检查平等吗?例如。

代码语言:javascript
复制
def approx(left, right, tolerance=1**10-6):
    if left - right < tolerance:
        return True
    else:
        return False
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42894306

复制
相关文章

相似问题

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