Python 除法对于大数无法按预期工作

问题描述 投票:0回答:1

我有三个变量

a
b
c
。我想确保这样做后:

c -= a*b

c
不是负数。

我现在正在这样做:

if a*b > c:
      b = c // a

但是对于非常大的数字,我仍然在

c
中得到负值。我该怎么办?

为了重现错误,这里有一些示例编号:

a = 5.195497498518083

b = 1.0813434626413702e+16

c = 5.614533816817397e+16

python largenumber
1个回答
0
投票

正如评论中所述,这可能与数字有多大无关,而是与您正在使用

float
这一事实有关,并且存在限制。为了说明问题,请在 REPL 中检查这一点。

>>> a=0.1+0.2
>>> b=0.3
>>> a==b
False
>>> a
0.30000000000000004
>>> 

但是你可以按照@rioV8的建议尝试使用整数

© www.soinside.com 2019 - 2024. All rights reserved.