Python做浮点数(float)运算有时会出现明明能整除但是没有整除的情况

遇见的就是能整除但是浮点运算后出现一堆小数

In [1]: count = 6564.5                                                                                                                                                                                                                                                                               

In [3]: import  math                                                                                                                                    

In [4]: max_x = math.ceil(6564.5/8.05)                                                                                                                  

In [11]:  temp = (count-257*8.05)/6.15                                                                                                                  

In [12]: temp                                                                                                                                           
Out[12]: 730.9999999999999

In [13]: (count-257*8.05)                                                                                                                               
Out[13]: 4495.65

In [14]: 4495.65/6.15                                                                                                                                   
Out[14]: 730.9999999999999

解决办法有两个:一个是用Decimal来进行计算,这个是专用于金融数据的计算,但是用这个比较损耗性能,如果不是牵扯到财务数据,不建议用,第二个是用round来限制小数位。我这是随手写的小的玩的东西,就用了第二种

In [15]: round(4495.65/6.15,2)                                                                                                                          
Out[15]: 731.0

整体:


'''

单价是8.05和6.15元,金额合计是6564.5元,能推出来数量吗
数量得是整数
没有总数量

'''

import  math
count = 6564.5
max_x = math.ceil(6564.5/8.05)

temp = (count-11*8.05)/6.15
print(type(temp))
finish = []
for i in range(0,max_x):
    temp = round((count-i*8.05)%6.15,2)
    temp2 = round((count-i*8.05)/6.15,2)
    if temp2%1 == 0.0:
        finish.append((i,temp2))

    print("8.05的数量{},6.15的数量{},求余{}结果不对".format(i,temp2,temp))

print('*'*100)
print(finish)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值