在python中除以两个非常大的数字返回1

在python中除以两个非常大的数字返回1,python,Python,我知道以前有人问过这个问题,但解决办法似乎对我不起作用。我在python(2.7)中有两个非常大的数字,如下所示: a = 332413405639482828453084501713288536462658058395850 b = 332413405639482828453084501713288536462658058395856 我需要你的结果 a/b 正如你们所看到的,两者之间有一个非常微小的差别,所以我假设这个除法的结果不是0或1。我已经试过了,正如其他帖子所建议的那样,但仍然没

我知道以前有人问过这个问题,但解决办法似乎对我不起作用。我在python(2.7)中有两个非常大的数字,如下所示:

a = 332413405639482828453084501713288536462658058395850
b = 332413405639482828453084501713288536462658058395856
我需要你的结果

a/b
正如你们所看到的,两者之间有一个非常微小的差别,所以我假设这个除法的结果不是0或1。我已经试过了,正如其他帖子所建议的那样,但仍然没有得到我想要的结果。有没有解决这个问题的方法,或者是用python或者用大量的数据都无法做到的

更新:顺便说一句,很抱歉,我忘了提一下,即使从future导入division,我仍然没有得到我想要的


谢谢,首先将它们转换为浮点,然后进行除法运算,否则当第一个整数小于第二个整数时,u将为零,因为您正在体验Python 2(而不是Python 3)。试试浮动(a)/float(b)我相信实现你想要的是不可能的。这个大数字的精度是无法达到的,所以在这种特殊情况下,结果将显示为
1

我们可以使用
decimal.decimal
(根据)查看存储在浮点中的精确值:


简单的浮动不够精确,请尝试使用模块


所以不管怎样,我都会得到1作为答案?不,检查我对你主要问题的评论。使用
decimal
模块。@svens回答得很好,我错过了
prec
属性。这不仅仅是整数到浮点转换的问题。不是直接重复。您不需要同时键入分子和外延。任何一种类型的铸造都会带来麻烦。这不是这里唯一的问题。在Python3中尝试同样的方法。
In [1]: a = 332413405639482828453084501713288536462658058395850

In [2]: b = 332413405639482828453084501713288536462658058395856

In [3]: import decimal

In [4]: a1 = decimal.Decimal(a)

In [5]: b1 = decimal.Decimal(b)

In [6]: a1/b1
Out[6]: Decimal('1.000000000000000000000000000')
>>> from decimal import Decimal, localcontext
>>> with localcontext() as cont:
        cont.prec=100
        Decimal(a)/Decimal(b)


Decimal('0.9999999999999999999999999999999999999999999999999819501864298840350161830097171743383579489213731828')
>>>