5

给定值 = 2 或 4.00
以下语句输出

value = Convert.ToDecimal(value).ToString("C2");

价值 = 2.00 美元或 4.00 美元

如果我有 value = 1000 那么输出将是$1,000.00但我需要$1000.00.

我不喜欢“$”和值的字符串连接。

4

4 回答 4

9
var stringValue = Convert.ToDecimal(value).ToString("$0.00");

正如下面@James 所指出的,这会将货币硬编码为格式。使用格式C2将使用系统货币格式。这可以针对系统进行更改(例如,在 Windows 7 中 - 开始 - 控制面板 - 更改显示语言 - 附加设置 - 货币 - 数字分组)并允许C2在该特定系统上运行时显示不带逗号的货币值。

编辑

感谢@James 使用当前的文化。我对他的回答的唯一修改是克隆当前NumberFormat,以便在删除CurrencyGroupSeparator.

var formatInfo = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
formatInfo.CurrencyGroupSeparator = string.Empty;

var stringValue = Convert.ToDecimal(value).ToString("C", formatInfo);
于 2012-06-29T12:23:25.280 回答
4

您应该使用NumberFormat该类来指定您需要的格式类型ToStringIFormatProvider例如

var formatInfo = (System.Globalization.NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
formatInfo.CurrencyGroupSeparator = ""; // remove the group separator
Console.WriteLine(2.ToString("C", formatInfo));
Console.WriteLine(4.ToString("C", formatInfo));
Console.WriteLine(1000.ToString("C", formatInfo));

这将使您的数字格式与您使用的任何文化保持一致。

于 2012-06-29T12:34:55.320 回答
2
public static class MyExtensions
{
    public static string GetMoney(this decimal value, bool displayCurrency = false, bool displayPeriods = true)
    {
        string ret = string.Format("{0:C}", value).Substring(displayCurrency ? 0 : 1);
        if (!displayPeriods)
        {
            ret = ret.Replace(",", string.Empty);
        }
        return ret;
    }
}

要使用此扩展方法:

decimal test = 40023.2345M;
string myValue = test.GetMoney(displayCurrency:true, displayPeriods:false);`
于 2012-06-29T12:52:32.230 回答
0

将整数值转换为 $0.00 格式

整数值 = 1000;字符串 abc = Convert.ToDecimal(Value).ToString("$0.00"); 输出将是 $1000.00

于 2013-06-13T05:37:54.643 回答