添加百分比的值总和不断给出错误结果
Sum of values with added percentage keeps giving wrong result
当我想对价格求和然后添加增值税时,我总是得到错误的金额。
我有以下情况:
假设我有 4 种产品,我希望它们在发票上显示。每个产品的价格都是 2.50。
我有以下代码:
@products = Product.find([1,2,3,4])
在我的发票上:
@products.each do |product|
%p
Price without VAT:
= number_to_currency(product.price) --> Gives € 2,50
%p
Price with 21% VAT:
= number_to_currency(product.price / 100 * 121) --> Gives € 3,03
显示如下:
- 不含增值税的价格:2,50 欧元
- 含 21% 增值税的价格:3,03 欧元
现在我要加总行。我试过这样的事情:
- sum = @products.sum( &:price ) --> Gives 10
%p
Total with 21% VAT:
= number_to_currency(sum / 100 * 121 ) --> Gives € 12,10 instead of € 12,12
我尝试过,我得到的总价是 12.10 欧元,而不是 12.12 欧元,含增值税。 (4 x 3,03 欧元 = 12,12 欧元)
我的数据库中的价格为:
t.decimal "price"
价格存储为 2.5
谁能帮我解决这个问题?
一个产品的正确增值税金额:
(BigDecimal.new("2.5") / 100 * 121).to_f #=> 3.025
4 个产品正确的增值税金额:
(BigDecimal.new("10") / 100 * 121).to_f #=> 12.10
选项:
- 不要四舍五入然后你可以从总和中计算出总增值税
- 四舍五入,然后将总增值税计算为每个产品的增值税金额之和
应用上述内容,1 件产品含增值税:
(product.price / 100 * 121).round(2)
所有含增值税的产品:
products.sum { |p| (p.price / 100 * 121).round(2) }
当我想对价格求和然后添加增值税时,我总是得到错误的金额。 我有以下情况:
假设我有 4 种产品,我希望它们在发票上显示。每个产品的价格都是 2.50。
我有以下代码:
@products = Product.find([1,2,3,4])
在我的发票上:
@products.each do |product|
%p
Price without VAT:
= number_to_currency(product.price) --> Gives € 2,50
%p
Price with 21% VAT:
= number_to_currency(product.price / 100 * 121) --> Gives € 3,03
显示如下:
- 不含增值税的价格:2,50 欧元
- 含 21% 增值税的价格:3,03 欧元
现在我要加总行。我试过这样的事情:
- sum = @products.sum( &:price ) --> Gives 10
%p
Total with 21% VAT:
= number_to_currency(sum / 100 * 121 ) --> Gives € 12,10 instead of € 12,12
我尝试过,我得到的总价是 12.10 欧元,而不是 12.12 欧元,含增值税。 (4 x 3,03 欧元 = 12,12 欧元)
我的数据库中的价格为:
t.decimal "price"
价格存储为 2.5
谁能帮我解决这个问题?
一个产品的正确增值税金额:
(BigDecimal.new("2.5") / 100 * 121).to_f #=> 3.025
4 个产品正确的增值税金额:
(BigDecimal.new("10") / 100 * 121).to_f #=> 12.10
选项:
- 不要四舍五入然后你可以从总和中计算出总增值税
- 四舍五入,然后将总增值税计算为每个产品的增值税金额之和
应用上述内容,1 件产品含增值税:
(product.price / 100 * 121).round(2)
所有含增值税的产品:
products.sum { |p| (p.price / 100 * 121).round(2) }