我试图将数字减半,但我的计划不想将一半减半而是向上。
例如,我有0.0498512222 我想要得到0.049,但是程序围绕一半,给我0.050
代码
#!/usr/bin/python
import sys, signal, json, time
import random
import decimal
from decimal import Decimal, ROUND_HALF_DOWN
num = 0.049852124
num = Decimal(num)
numCoins = Decimal(num.quantize(Decimal('0.001'), rounding=ROUND_HALF_DOWN))
numCoins = float(numCoins)
print numCoins
我不知道如何解决此错误,因为它适用于加密货币机器人,numCoins
是我拥有的硬币数量。如果程序向上一半,我会收到一个错误,例如“帐户余额不足以应对所请求的操作”,因为我销售的产品不能超过我的产品。
答案 0 :(得分:1)
ROUND_HALF_DOWN是圆形 半 向下,就像一个数字正好在两个选项中间的一半,它向下舍入。其他一切都绕到最近。你明显高于0.049和0.050之间的中间点,所以你四舍五入到最接近的位置。
如果要将所有内容向下舍入,那就是ROUND_DOWN,而不是ROUND_HALF_DOWN。
另外,如果你想要十进制算术,从一开始就使用浮点数就是一个错误。而不是num = 0.049852124
,你应该使用完全使用num = Decimal('0.049852124')
之类的避免浮点数,并且你应该避免在最后生成浮点数。
答案 1 :(得分:0)
这样的东西?
import sys, signal, json, time
import random
import math
num = 0.049852124
# where 1 is in the position you want to truncate
numCoins = num - math.fmod(num, 0.001)
print numCoins # 0.049