java 开票金额拆分_关于开票尾差拆分凑整的算法问题
多個費項合計計算含稅價與分別計算含稅的合計不一致,存在尾差。
例如:
不含稅稅率含稅價
費項15133.21 6%5441.2
費項22647976.26 6%2806854.84
費項3475247.96 6%503762.84
費項4375270.75 6%397787
費項51180985.96 6%1251845.12
費項634190.42 6%36241.85
費項7623404.86 6%660809.15
費項8121905.77 6%129220.12
費項918500.00 6%19610
費項1050859.94 6%53911.54
合計5533475.135865483.66
用不含稅合計計算的含稅價位5865483.64.與分項合計存在2分的尾差。
為了減少fp的使用量,求得最小拆分數,并給出各個拆分結果,不含稅與含稅符合6%的固定稅率,且不含稅合計要等于a,含稅合計要等于b。
該類問題除了暴力拆分,是否有更優、更快的算法?懇請各位大神指教。
(目前暴力拆分只會寫固定拆分幾次的,如何實現暴力2拆失敗嘗試暴力3拆、4拆.....)
pythona = float(input("請輸入不含稅金額:"))
b = float(input("請輸入含稅金額:"))
def fpcf(a,b):
x = 0.01
y = 0.01
s = 0
list2 = []
while x <= a:
while y <= a:
c = round(x,2)
d = round(x*1.06,2)
e = round(y,2)
f = round(e * 1.06, 2)
g = round(a - x - y,2)
h = round(g*1.06,2)
print("這是第{:.2f}-{:.2f}次嘗試".format(x,y))
print()
y += 0.01
list1 = []
if (d+f+h) == b and c > 0 and e > 0 and g > 0:
print("拆分成功!不含稅金額分別為{:.2f} {:.2f} {:.2f}".format(c,e,g))
list1.append(c)
list1.append(e)
list1.append(g)
list2.append(list1)
return
else:
continue
y = 0.01
x += 0.01
if len(list2) >0:
print("一共有{}個結果!".format(len(list2)))
for z in list2:
print(z)
else:
print("拆分失敗!")
print(fpcf(a,b))
input("Press ")
總結
以上是生活随笔為你收集整理的java 开票金额拆分_关于开票尾差拆分凑整的算法问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java储存学生档案应该注意事项_档案管
- 下一篇: mysql web备份软件_Window