這是我在官方工具中看到的,我需要計算相同的最終值:

為了澄清:
我得到了數字 95、3、5、19 和 17.15。
我正在嘗試在 VB.NET 中復制一個數學公式,以達到與我必須遵守的政府金融工具相同的金額。
官方工具的結果和我的結果相差 0.1 歐元,我看不出我需要做什么才能達到相同的結果。
官方工具指出:
A product costs 95.00 € net.
Somebody buys 3 pieces of it.
He gets a discount of 5 % (=4.75 €)
19% VAT is added: 17.15 €
The net price is then 90.25 €
The price is now 270.75 €
The resulting end price is now 322.19 €.
我得到的價值觀是:
net price for 1 piece: 95 €
amount: 3
discount per piece: 5%
VAT amount: 19%
VAT: 17.15
首先,我這樣計算折扣:
Dim amount As Integer = 3
Dim discount As Double = 5
Dim VAT As Double = 17.15
All result As Decimal
Discount = (amount * discount) / 100 = 4.75
Discounted net price per piece = 95 - 4.75 = 90.25
Discounted net price per piece plus vat = 95 17.15 = 107.4
Total price result = discounted net price per piece * amount = 107.4 * 3 = 322.2 €
通過選擇錯誤的運營商,我做錯了什么嗎?
是否有可能獲得與他們使用我提供的資訊相同的金額?
謝謝你。
uj5u.com熱心網友回復:
編輯:
我剛剛意識到您實際上在下面的計算中確實使用了正確的折扣凈價,但您只是寫了您沒有,即即使運算元不正確,結果也是正確的。
原來的:
你來做這件事:
每件折扣凈價 = 95 - 4.75 = 90.25
但然后在這里:
每件折扣凈價加增值稅 = 95 17.15 = 107.4
您不使用先前計算的結果。
此外,即使您確實使用了折扣價,在價格上加上一個百分比又有什么意義呢?當然,您需要計算該價格的百分比,然后將該結果添加到該價格。我認為那條線應該是這樣的:
每件折扣凈價加增值稅 = 90.25 (90.25 * 17.15 / 100) = 105.7(27875)
uj5u.com熱心網友回復:
根據
嘗試以下操作:
'for testing
Private cultureInfo As System.Globalization.CultureInfo = System.Globalization.CultureInfo.GetCultureInfo("de-DE")
'ToDo: use this one to use the current culture info of the computer
'Private cultureInfo As System.Globalization.CultureInfo = System.Globalization.CultureInfo.CurrentCulture
'get currency symbol
Private currencySymbol As String = cultureInfo.NumberFormat.CurrencySymbol
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim InitialPrice As Decimal = 95
Dim Quantity As Decimal = 3
Dim DiscountPercentage As Decimal = 5
Dim VATPercentage As Decimal = 19
'set value
TextBoxInitialPrice.Text = InitialPrice.ToString("N2", cultureInfo)
TextBoxQuantity.Text = Quantity.ToString("N0", cultureInfo)
TextBoxDiscountPercentage.Text = DiscountPercentage.ToString("N0", cultureInfo)
TextBoxVATPercentage.Text = VATPercentage.ToString("N0", cultureInfo)
End Sub
Private Sub Calculate()
Dim DiscountAmount As Decimal = 0
Dim DiscountPercentage As Decimal = 0
Dim NetPrice As Decimal = 0
Dim InitialPrice As Decimal = 0
Dim Quantity As Decimal = 0
Dim VATAmount As Decimal = 0
Dim VATPercentage As Decimal = 0
Dim GrossSalesPrice As Decimal = 0
'ToDo: Ensure that the user entered valid input. If not, notify the user of invalid input
'convert String to Decimal
Decimal.TryParse(TextBoxInitialPrice.Text, System.Globalization.NumberStyles.Currency, cultureInfo, InitialPrice)
Decimal.TryParse(TextBoxDiscountPercentage.Text, System.Globalization.NumberStyles.Number, cultureInfo, DiscountPercentage)
Decimal.TryParse(TextBoxVATPercentage.Text, System.Globalization.NumberStyles.Number, cultureInfo, VATPercentage)
Decimal.TryParse(TextBoxQuantity.Text, System.Globalization.NumberStyles.Number, cultureInfo, Quantity)
Debug.WriteLine($"A product costs {InitialPrice.ToString("N2", cultureInfo)} {currencySymbol} net.")
Debug.WriteLine($"Somebody buys {Quantity.ToString("N0", cultureInfo)} pieces of it.")
'calculate discount amount
DiscountAmount = Decimal.Multiply(InitialPrice, Decimal.Divide(DiscountPercentage, 100))
Debug.WriteLine($"He gets a discount of {DiscountPercentage.ToString("N0", cultureInfo)}% (={DiscountAmount.ToString("N2", cultureInfo)} {currencySymbol})")
'calculate net price
NetPrice = Decimal.Subtract(InitialPrice, DiscountAmount)
Debug.WriteLine($"The net price is then {NetPrice.ToString("N2", cultureInfo)} {currencySymbol}")
'calculate gross price
Dim NetSalesPrice As Decimal = Decimal.Multiply(NetPrice, Quantity)
Debug.WriteLine($"The price is now {NetSalesPrice.ToString("N2", cultureInfo)} {currencySymbol}")
'set value
TextBoxNetSalesPrice.Text = NetSalesPrice.ToString("N2", cultureInfo)
Debug.WriteLine($"{VATPercentage.ToString("N0", cultureInfo)}% VAT is added to this amount.")
'calculate VAT amount
VATAmount = Decimal.Multiply(NetSalesPrice, Decimal.Divide(VATPercentage, 100))
'set value
TextBoxVATAmount.Text = VATAmount.ToString("N2", cultureInfo)
'calculate grand total (gross sales price)
'GrossSalesPrice = Decimal.Multiply(NetSalesPrice, Decimal.Add(1, Decimal.Divide(VATPercentage, 100)))
GrossSalesPrice = Decimal.Add(NetSalesPrice, VATAmount)
Debug.WriteLine($"The resulting end price is now {GrossSalesPrice.ToString("N2", cultureInfo)} {currencySymbol}")
'set value
TextBoxGrossSalesPrice.Text = GrossSalesPrice.ToString("N2", cultureInfo)
End Sub
用法:
Calculate()

更新:
從上面的代碼中,可以提取以下公式,這些公式是使用官方工具下方列出的資訊創建的:
公式
DiscountAmount = InitialPrice * (DiscountPercentage / 100.0)
NetPrice = InitialPrice - DiscountAmount
NetPrice = InitialPrice - (DiscountAmount)
NetPrice = InitialPrice - (InitialPrice * (DiscountPercentage / 100.0))
NetSalesPrice = NetPrice * Quantity
VATAmount = NetSalesPrice * (VATPercentage / 100.0)
GrossSalesPrice = NetSalesPrice VATAmount
鑒于以下情況:
- 凈價:95
- 數量(數量):3
- 折扣百分比:5%
- 增值稅百分比:19%
- 增值稅金額:17.15
公式 #1:DiscountAmount = InitialPrice * (DiscountPercentage / 100.0)
公式 #2:NetPrice = InitialPrice - (DiscountAmount)
如果將DiscountAmount公式代入Formula #2,則有:
NetPrice = InitialPrice - (InitialPrice * (DiscountPercentage / 100.0))
讓我們將資訊插入公式:
95 = InitialPrice - (InitialPrice * (5 / 100.0))
95 = InitialPrice - (InitialPrice * 0.05)
讓我們換InitialPrice一個可能更熟悉的東西:x
95 = x - (x * 0.05)
95 = 1x - 0.05x
95 = 1.00x - 0.05x
95 = 0.95x
ToDo : 求解x(InitialPrice)。
公式:NetSalesPrice = NetPrice * 數量
將資訊插入公式:
NetSalesPrice = 95 * 3
NetSalesPrice = 285
OP 中關于VATAmountand的資訊VATPercentage似乎在不斷變化。然而,人們使用簡單的代數來求解未知變數。
公式:增值稅金額 = NetSalesPrice * (VATPercentage / 100.0)
將資訊插入公式:
VATAmount = 285 * (19 / 100.0)
或給出VATAmount = 17.15而不是 aVATPercentage:
17.15 = 285 * (VATPercentage / 100.0)
再一次,讓我們換VATPercentage一個可能更熟悉的東西:x
17.15 = 285 * (x / 100.0)
17.15 = 285x / 100.0
17.15 * 100 = 285x
1715 = 285x
待辦事項:求解x(增值稅百分比)。
資源:
- 十進制乘法
- 小數.除法
- 十進制.加
- 文化資訊
- NumberFormatInfo.CurrencySymbol
- 標準數字格式字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/528403.html
上一篇:演算法問題-如何根據固定價格和隨行駛公里數變化的價格來知道哪家出租車公司總是更好
下一篇:計算已平移和縮小的元素的位置
