2010-07-15 49 views
0

我正在创建一家网上商店,必须计算向客户收取多少费用以确保费用已取消。支付系统增加了费用,我希望客户支付费用。如何解决这个方程?

费用为2.45%和1.10欧元。

这意味着,如果顾客购物满€100,并且我向支付系统报告该价值,那么我们只能获得96.45欧元。 (100 - (2.45 + 1.1))。

这并不好。

如何计算发送到支付系统的正确价值,以便获得100欧元? 这不仅仅是说€100 + 2.45%+€1.1 =€103.55并将其报告给支付系统。因为这时的支付系统会说

€103.55 - ((的103.55 2.45%)+ 1.1)
€103.55 - (2,536975 + 1.1)
€103.55 - 3,636975
€99,913025

而且显然是不正确的。

那么我该如何计算发送给支付系统以获得期望值的内容呢?

我已经走了这么远,这是下面的公式:

X - (X * 0.0245) - 1.10 = Y
这里,X是所需的量发送到支付系统和Y是客户已经逛过了(100)的量,因此:

X - (X * 0.0245) - 1.10 = 100

但我怎么解决,找出X的是什么?

在此先感谢

+2

听起来像你错误的公式。 “2.45%至1.10”(即:两者中的最小值或最大值)或“2.45%+ 1.10”之间存在差异。确保您使用的公式与支付处理器将使用的匹配。 – cHao 2010-07-15 21:26:33

+0

只要确保你不要在二进制浮点数学中做到这一点。 – Joren 2010-07-15 21:36:02

+0

@Joren用二进制来做这件事比许多人想象的要少,因为按照会计惯例进行四舍五入时,这种简单的操作不会引入足够多的错误。对于解决方案提供会计建议并检查向客户添加转发交易费用的法律问题(许多信用卡不允许),海报将是明智的。 – tovare 2010-07-15 21:49:59

回答

14

Wolfram Alpha将解决这个给你。我现在正在研究一个更加程序化的解决方案。

您的等式X - (X * 0.0245) - 1.10 = Y准确无误。让我们简化如下:

X - (X * 0.0245) - 1.10 = Y 
X - 0.0245 * X - 1.10 = Y 
(1 - 0.0245) * X - 1.10 = Y 
0.9755 * X = Y + 1.10 
X = (Y + 1.10)/0.9755 

根据您的定义,X是所需的金额,Y是客户支付的金额。这个等式给你Y基于X.如果我的一个步骤不清楚,让我知道。

+6

+1为Wolfram Alpha链接 – CaffGeek 2010-07-15 21:29:22

+0

+1为链接和推广解决方案 – Mandelbrot 2010-07-15 21:32:24

1

下面是一些数学视频:

http://www.khanacademy.org

更新注:的K12级数学题似乎计算器上稍微offtopic,它不涉及到编程专业。这些视频是很基本的数学问题,如这一个...包括百分比和基础代数高质量的培训

+1

这并不真正回答问题 – Mandelbrot 2010-07-15 21:29:12

+2

问题是offtopic :-) – tovare 2010-07-15 21:32:25

+2

@Mandelbrot - tovare有一点,methinks。如果一个开发人员在使用基础代数时遇到问题,那么很难在专业级别上编写程序。 – 2010-07-15 21:52:58

2

X - 0.0245x = 101.1

(1 - 0.0245)x = 101.1

x = 101.1 /(1-0。0245)

X = 103.639

+0

只是为了澄清:101.1 = 100 + 1。1 – 2010-07-15 21:27:52

+0

谢谢@Tobias。正如Stephen指出Wolfram Alpha是你的朋友,你会被代数混淆。 – Mandelbrot 2010-07-15 21:31:14

4

你只要穿起来走路:

X - (X * 0.0245) - 1.10 = 100 
X - (X * 0.0245) = 100 + 1.10 
X (1 - 0.0245) = 101.10 
101.10/x = 1 - 0.0245 
101.10 = (1 - 0.0245) * x 
101.10/(1 - 0.0245) = x 
x = 103.639159 

但像史蒂芬徐说Wolfram Alpha的是你的朋友,当你要解决的数学问题。

1
X - (X * 0.0245) - 1.10 = Y 
X - (X * 0.0245) = Y + 1.10 
X * (1 - 0.0245) = Y + 1.10 
X = (Y + 1.10)/(1 - 0.0245) = (Y + 1.10)/0.9755 
1

我不知道,如果你是严重的,但如果你是:

X - (X * 0.0245) - 1.10 = 100

- > 101.10 - 0.9755 * X = 0 - > 101.1/0.9755 = x - > x = 103,5366

是否有任何特定的编程语言要使用? (不是说这个差别很大)

btw: 很好的回答史蒂芬许!

0

也许我在整个讨论中漏掉了一些东西,但是我们真的在评估正确的方程吗?

费用为2.45%和1.10欧元。将这些费用增加到100欧元的订单将是。

subtotal = €100 
grandtotal = subtotal*(1 + 0.0245) + €1.1 = €103.55 
      = subtotal + subtotal*0.0245 + €1.1 = €103.55 

这产生sub*(1 + pct) + flat = tot的方程。求解sub

sub*(1 + pct) + flat = tot 
sub*(1 + pct) = tot - flat 
sub = (tot - flat)/(1 + pct) 

or distributing sub first 

sub + sub*pct + flat = tot 
sub + sub*pct = tot - flat 
sub*(1 + pct) = tot - flat 
sub = (tot - flat)/(1 + pct) 

最后,它产生相同的公式sub = (tot - flat)/(1 + pct)。因此解决小计给出总计:

grandtotal = €103.55 
subtotal = (grandtotal - €1.1)/(1 + 0.0245) = €100 

我错过了什么吗?