如何检查两个金额相乘的结果是否等于某个总金额或几美分。例如:5.57 * 2.92 = 16.2644和3.25 * 5 = 16.25。 我每次增加第一笔金额为0.01的金额以尝试找到最接近总金额的金额,第二笔金额不变。检查两个金额的总和是否等于某个总差额
回答
如果您使用Python(或任何编程语言)进行财务类型计算,您可以使用而不是希望使用浮点数(http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)。
相反,一定要至少使用decimal
模块,它会给你任意精度的十进制数(http://docs.python.org/2/library/decimal.html)。
至于你的实际问题:
from decimal import Decimal
r1 = Decimal("5.57") * Decimal("2.92")
r2 = Decimal("3.25") * Decimal("5")
epsilon = Decimal("0.01")
if abs(r1 - r2) <= epsilon:
print "Almost equal!"
它至少部分是这样做的:0.01不能用二进制表示,这意味着如果OP使用浮动,OP的计算会很早就开始累积错误。 –
好点。编辑! –
谢谢,那对我有帮助。 –
小数还是不错的。
,但对一个公差范围内两个浮体比较:
tolerance = 0.04
if abs(number1 - number2) < tolerance:
print('the numbers are close')
谢谢,是否有任何优势使用浮动,而不是小数由马克斯诺埃尔建议? –
这是写得最快,最容易的一点,但由于准确性问题,这里的一般建议是“十进制”。 – jayelm
- 1. 总额和部分金额
- 2. 总金额时,另一场等于某个值
- 3. 总金额总是为零
- 4. 金额加总
- 5. 查询每个项目的金额大于100的订单总金额
- 6. 总金额的更新金额
- 7. 金额返回0而不是实际金额的总和
- 8. 01价值对总金额的差异
- 9. JQgrid总金额排
- 10. 计算总金额
- 11. xslt汇总金额
- 12. 订单总数,总金额和AOV
- 13. SQL查询 - 检查每个员工的总金额并显示这些员工的金额低于5000
- 14. Mysql查询总和动态金额
- 15. 检查进度条是否等于JQuery的金额
- 16. 限额总和只在前10个金额
- 17. 获取每个行的总金额
- 18. 从总计和金额中计算总额
- 19. Rails:如何总计每天和整个期间的总金额
- 20. 使用mysql和codeigniter检查总和(金额)的条件
- 21. 产品的税金总额
- 22. 使用sqlite的总金额
- 23. 总销售金额和总更新到另一个表
- 24. 发票总额的份额(总和组)
- 25. 基于另一个行值显示金额的总和
- 26. 金额总额后应自动加入
- 27. SUM子查询每行的总金额
- 28. 从查询返回的总金额
- 29. 交换机的时差和金额的总和
- 30. 条纹收取总金额
似乎很简单 - 我们可以看到你的代码? – jedwards
所以你想计算涉及的总股份? –
@AamirAdnan我在计算潜在利润,如果马上的价格在你支持它之后下跌,基于蜱,所以说你回到5.0,马下降到4.8,我想显示你可以为它铺平了多少把你的债务转化为利润 –