价格应该是50,90但是50,91 - 我认为问题已经解决了。但显然它不起作用。有什么提示可以解决这个问题吗?
base_subtotal 49,5800
base_tax_amount 8,13
shipping_amount 4,12
shipping_tax_amount 0,79
subtotal_incl_tax 59,00
total_due 50,91
答案 0 :(得分:0)
我假设您正在计算增值税(Steuern)。
对于初学者来说,shipping_amount + shipping_tax_amount不会加起来:4,12 + 0,79 = 4,91。
我认为你犯了经典的错误,使用浮点数进行除法,加法和减法,然后对数字进行舍入以打印它们,但仍使用其他路径中的未包含数字。
我不知道你如何得到0.79作为shipping_tax_amount; 4.90除以1.19是4.117647 ......;圆形,给出4.12。除非您将4.1176747 ..截断为4.11,否则从4.90 =>中减去该值。 0.79。
有两种方法可以解决这个问题:
这两个解决方案基本相同,因为整数总是隐式舍入。此外,在计算金额的增值税部分时,不要直接使用除法,而是减去总额:
shipping = 4.90;
shipping_without_vat = round(shipping / 1.19, 2);
shipping_vat = shipping - shipping_without_vat;
然后使用shipping_without_vat和shipping_vat进行剩余的计算。