我有三个变量
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
正如评论中所述,这可能与数字有多大无关,而是与您正在使用
float
这一事实有关,并且存在限制。为了说明问题,请在 REPL 中检查这一点。
>>> a=0.1+0.2
>>> b=0.3
>>> a==b
False
>>> a
0.30000000000000004
>>>
但是你可以按照@rioV8的建议尝试使用整数