【问题标题】:multiplying int to double c# [closed]将 int 乘以 double c# [关闭]
【发布时间】:2012-12-12 17:12:11
【问题描述】:

我想将 textbox1(int) 乘以 textbox2(double) 并在 textbox3 中返回一个 double 我正在做一个发票应用程序,需要将数量乘以费率来获得到目前为止的金额...

private void textbox2_TextChanged(object sender, system.EventArgs e)
{
 int32 qty = int32.Parse(Textbox1.text);
 Double rate = Double.Parse(Textbox2.text);
 Double amt = qty * rate;
 textbox3.text = amt.ToString();
}

我哪里出错了?

【问题讨论】:

  • 您面临的问题/错误是什么?
  • 与上述相同的问题,还有什么理由不能将它们都解析为双打?
  • 只需在您的数量上使用 double
  • 您可能要考虑的一件事是,如果文本框不包含数字(例如,有人在其中写入文本),您将如何处理事情。出于这个原因,您可能希望查看 TryParse 方法而不是普通的 Parse
  • 如果这是发票,您一开始就不应该使用双打;使用双打解决物理问题。使用小数解决财务问题;这就是它的设计目的。

标签: c# .net operators


【解决方案1】:

首先您需要检查第一个文本框是否为空或空格。 然后,如果您的第一个文本框为空或空白,则向用户提供适当的消息。

试试下面的例子:

if (!string.IsNullOrWhiteSpace(Textbox1.text))
{
    int qty = Int32.Parse(Textbox1.text);
    double rate = Double.Parse(Textbox2.text);
    Textbox3.text = (rate* (double) qty).ToString();
}
else
{
    //Give appropriate message to user for entering quantity in textbox 1
}

【讨论】:

  • 我仍然得到 4 * 10.00 = 40 而不是 40.00
  • 好的,我用了这个,但是把 double 改成了 decimal 就可以了
  • 您可以像这样直接转换或格式化您的字符串... Textbox3.text = amt.ToString("0.00");
  • 对于这个评论这个链接...csharp-examples.net/string-format-double
  • 确实没有必要将qty 转换为doubledouble * int 的结果始终为 double
【解决方案2】:

试试这个

  textBox3.Text = (Int32.Parse(textBox1.Text) * Double.Parse(textBox2.Text)).ToString();

【讨论】:

    【解决方案3】:

    首先。处理金钱时,请始终使用十进制,而不是双精度。 而对于小数,用户同时使用逗号和点作为小数分隔符总是存在问题。

    这段代码对我有用:

        int qty = Int32.Parse("2");
        Decimal rate = Decimal.Parse("3.14".Replace(".", ","));
        Decimal amt = qty * rate;
        Console.WriteLine(amt);
    

    【讨论】:

    • 该代码不是仅适用于十进制分隔符为逗号的语言环境吗?
    • 是的。如果您针对多个语言环境,最好使用适当的文化处理。
    猜你喜欢
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多