在处理股票市场自动交易程序中的美元数字(被称为“算法交易”)时,这些数字很难管理。我认为这不是重复的,因为我没有在其他类似的问题/答案中找到合适的解决方案。
如果我单独运行这个[更新,原来这是家里的 2.7.2 版]:
price_list = [1.0, 2.0, 2.5, 3.0, 4.0, 4.5, 4.6, 4.6, 4.7]
print price_list
...它以您在上面看到的方式打印。然而,在我的千行程序中,Python 似乎在说,你并不是真的那个意思,你真正的意思是:
>nasdaq_crunching_4d.py
[1.0, 2.0, 2.5, 3.0, 4.0, 4.5, 4.5999999999999996, 4.5999999999999996, 4.7000000000000002]
[更新:它与我的程序中的两行没有任何关系。额外的数字输出在我使用的远程主机上,Bluehost 的版本是 2.6.6。我很惊讶有人在使用 2.6,看起来它是随他们的 CentOS 一起提供的,而且他们为每个用户提供了升级说明,很好。然而,问题的其余部分仍然有效。]
...然后在不知不觉中,您正试图围绕庞大的清单(小开胃菜,在我看来太辣了):
'slopes': [-40.280000000000001, 79.689999999999998, -40.56000000000...
80.340000000000003, -40.420000000000002, 80.159999999999997, -40.28...
79.849999999999994, -40.090000000000003, 79.439999999999998, -39.96...
79.129999999999995, -40.350000000000001, 79.829999999999998, -40.39...
80.030000000000001, -40.729999999999997, 80.719999999999999, -40.93...
我想告诉 Python,不,我不是这个意思4.5999999999999996
,我的意思很准确4.60
,如果你需要的话,后面跟着十亿和一个零,我只想要其中两个数字,这样你就可以忽略其余的零。但是,如果是4.60
,请顺便告诉我4.60
,不是4.6
,而且绝对不是4.5999999999999996
。
这也不好吃:
'lst': [Decimal('124.75'), Decimal('125.18'), Decimal('125.18...
'ma_b': {'max': 4, 'now': Decimal('125.36'), 'lth': 5, 'slp':...
Decimal('125.18'), Decimal('125.25'), Decimal('125.36')]}, 'm...
0.06], 'lst': [Decimal('125.19'), Decimal('125.17' '118.19'),...
您可能想知道我正在导入数学(使用其中的各种函数),并尝试了 round()、float()、“%.2f”以及我现在忘记的其他方法。有一个大而复杂的字典,其中包含各种股票代码、价格、移动平均线、斜率和许多其他浮点数以及字符串和其他字典等列表。
有什么方法可以使美元始终如一地只是美元和美分吗?谢谢。