目前的文化是“fr-FR”(已在应用程序中设置)
decimal amount = 20m;
var formattedCurrency = string.Format(Thread.CurrentThread.CurrentCulture, "{0:C}", amount);
它给了我20,00 €
如何删除尾随零?
编辑:
我尝试使用G29
删除尾随零,但丢失了货币符号。 :(
答案 0 :(得分:1)
double dec = 20.01;
string amount = string.Format("{0:#.##}", dec);
switch (CultureInfo.CurrentCulture.NumberFormat.CurrencyPositivePattern)
{
case 0:
amount = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol + amount;
break;
case 1:
amount = amount + CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol;
break;
case 2:
amount = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol + " " + amount;
break;
case 3:
amount = amount + " " + CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol;
break;
}
在Davio发表评论后更新
问候。
答案 1 :(得分:1)
试试这个https://dotnetfiddle.net/F3cJmu
using System;
using System.Globalization;
public class Program
{
public static void Main()
{
double amount = 39.5555;
string decimalPoint = (amount).ToString();
decimalPoint = decimalPoint.Substring(decimalPoint.IndexOf(".") + 1);
if( decimalPoint.Length > 0)
Console.WriteLine(string.Format(new CultureInfo("en-US"),"{0:C" + decimalPoint.Length +"}", amount));
else
Console.WriteLine(string.Format(new CultureInfo("en-US"),"{0:C}", amount));
}
}
答案 2 :(得分:1)
这将有效:
string.Format(Thread.CurrentThread.CurrentCulture, "{0:#.##}", amount) + " " + Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol
如果你需要知道货币符号应该出现在哪里,它会变得有点复杂,但这可能就足够了(取决于你的情况)。
问题是,你不能为货币格式指定条件数字,并且有充分的理由你不应该这样做!
事情是:20
在20.00
上丢失有效数字,因此客户不知道它是20.01
向下舍入还是20.00
向下舍入。我会使用{0:C}
,除非我有充分的理由不这样做。