如何转换reader.Read字符串到c#中的货币格式

时间:2017-11-03 20:40:58

标签: c#

嘿伙计们我构建了以下代码,尝试将读者[BalanceAmt]转换为货币,即23,456.78美元。我似乎无法让它发挥作用。它仍然返回“23456.782”任何想法?

    while (reader.Read())
                    {
                        string MyNum = reader["BalanceAmt"].ToString();
                        String.Format("{0:#,###0}", MyNum);
                        BalanceBox.Text = (MyNum);

                    }

3 个答案:

答案 0 :(得分:3)

如果reader["BalanceAmt"]返回string然后让您的数字格式生效,则需要在将其转换为货币之前将其转换为数字 - 即

var myNum = Convert.ToDecimal(reader["BalanceAmt"]);
BalanceBox.Text = myNum.ToString("C");

请注意传递到"C"方法的decimal.ToString货币格式说明符参数 - 请参阅MSDN Decimal.ToString Method Documentation

如果Convert.ToDecimal包含reader["BalanceAmt"]无法处理的任何内容(非数字字符),则Convert.ToDecimal方法会抛出异常。

您可能希望在此周围添加try..catch,或者如果您不想抛出异常,请在Decimal.TryParse支票中使用if

var balanceAmt = reader["BalanceAmt"];

if (decimal.TryParse(balanceAmt, out var myNum))
{
    BalanceBox.Text = myNum.ToString("C");
}

答案 1 :(得分:0)

请使用此:

BalanceBox.Text = String.Format("{0:#,###0}", Convert.ToDouble(MyNum));

答案 2 :(得分:0)

 while (reader.Read())
   {
     BalanceBox.Text = reader["BalanceAmt"].ToString("c");
   }

在您的代码中String.Format("{0:#,###0}", MyNum); MyNum永远不会更改...仅格式化。