【问题标题】:Calculate Gross Profit W/O Sell计算无销售毛利
【发布时间】:2017-09-27 14:12:28
【问题描述】:

试图让自己成为一个无需售价即可计算毛利润的小型工作项目。谁能解释为什么这被标记下来?在某一时刻,我们都需要帮助..

我目前有 4 个文本框,成本、销售、毛利率、加价

我通常如何做到这一点,它擅长的是 =Cost/(1-Gp Markup),这将返回 14.99 美元,以 12.74 美元的成本出售,例如 @ 15%

我的代码低于任何帮助将不胜感激:)

private void button2_Click(object sender, EventArgs e)
{
   double cost = Convert.ToDouble(costTextBox.Text);
   double grossmargin = Convert.ToDouble(grossmarginTextBox.Text);
   double grossSellFinal = cost + (cost * grossmargin)/100;
   // This returns $14.65 which is a mark up not gross profit
   sellTextBox.Text = grossSellFinal.ToString();
}

我也试过了

private void button2_Click(object sender, EventArgs e)
{
   double cost = Convert.ToDouble(costTextBox.Text);
   double grossmargin = Convert.ToDouble(grossmarginTextBox.Text);
   double grossSellFinal = cost / (1 - grossmargin);
   //This returns a sell of -0.91
   sellTextBox.Text = grossSellFinal.ToString();
}

https://www.calculatorsoup.com/calculators/financial/margin-calculator.php?cost=12.74&revenue=14.99&action=solve

【问题讨论】:

  • 您收到什么结果?或者哪些错误?
  • 嗨 Shultc,没有错误只是得​​到错误的答案。正确答案应该是卖出 14.99 美元 我只能设法得到 14.65 或 0.91,这两个都是不正确的

标签: c# .net accounting


【解决方案1】:

根据您的公式,Sell 应等于 Cost / (1 - Gross Profit Margin),其中 Gross Profit Margin 是 0 和 1 之间的小数):

private void button2_Click(object sender, EventArgs e)
{
   decimal cost = Convert.ToDecimal(costTextBox.Text);
   decimal grossmargin = Convert.ToDecimal(grossmarginTextBox.Text);
   decimal grossSellFinal = cost / (1 - grossmargin);
   sellTextBox.Text = grossSellFinal.ToString();
}

如果您输入 grossmargin 作为 0 到 100 之间的值,则应将该值除以 100:

private void button2_Click(object sender, EventArgs e)
{
   decimal cost = Convert.ToDecimal(costTextBox.Text);
   decimal grossmargin = Convert.ToDecimal(grossmarginTextBox.Text);
   decimal grossSellFinal = cost / (1 - grossmargin/100);
   sellTextBox.Text = grossSellFinal.ToString();
}

同样,如果输入非法值(例如grossmargin = 1),也建议抛出某种错误/警告:

private void button2_Click(object sender, EventArgs e)
{
   decimal cost = Convert.ToDecimal(costTextBox.Text);
   decimal grossmargin = Convert.ToDecimal(grossmarginTextBox.Text);
   if (grossmargin > 100)
   {
       sellTextBox.Text = "Error message here";
   }
   else 
   {
       decimal grossSellFinal = cost / (1 - grossmargin/100);
       sellTextBox.Text = grossSellFinal.ToString();
   }
}

我不确定处理除以零的正确会计方法,所以上面只是一个例子。我将把实际的实现留给你。

【讨论】:

  • 最好将“double”改为十进制。或者在所有这些数学之后可能会有非常讨厌的工件
  • @Shultc 同意。防止后续“这些奇怪的浮点错误是从哪里来的?”问题。
【解决方案2】:

你的两个计算做了非常不同的事情:

一个是成本 * 115% 一是成本/85%

您的第二个示例失败,因为您的边距为 1500%(您没有除以 100)

如果您在第二个示例中使用“0.15”作为毛利率,您应该得到“14.9882352941176”的卖出

【讨论】:

  • 另外,为了钱,最好使用“十进制”类型。
猜你喜欢
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
相关资源
最近更新 更多