![](/img/trans.png)
[英]String.Format() convert decimal? to ###,###,###.00 format
[英]Convert.ToString(Decimal, IFormatProvider) or String.Format
我已經看到了ToString(IFormatProvider)的奇數十進制類型行為問題
這是我的測試代碼
// Define an array of numbers to display.
double[] numbers = { -1.5345e16, -123.4321, 19092.123, 1.1734231911290e16 };
// Define the culture names used to display them.
string[] cultureNames = { "en-US", "fr-FR", "ja-JP", "ru-RU" };
foreach (double number in numbers)
{
Console.WriteLine("{0}:", Convert.ToString(number,
System.Globalization.CultureInfo.InvariantCulture));
foreach (string cultureName in cultureNames)
{
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(cultureName);
culture.NumberFormat.NumberGroupSizes = new int[] {2,2,3};
culture.NumberFormat.NumberDecimalDigits = 5;
Console.WriteLine(".ToString {0}: {1,20}",
culture.Name, number.ToString("N", culture));
Console.WriteLine("Convert.ToString {0}: {1,20}",
culture.Name, Convert.ToString(number, culture));
}
Console.WriteLine();
}
樣本結果如下:
為什么Convert.ToString不應用格式?
這是Win7 Prof / VS2010 + SP1Rel(10.0.40219.1)
根據Convert.ToString(double, IFormatProvider)
的文檔:
此實現與Double.ToString(IFormatProvider)相同
...然后記錄為:
ToString(IFormatProvider)方法以指定區域性的默認(“ G”或常規)格式格式化Double值。
調用ToString
,您傳遞的是N
如果傳遞G
,則得到的結果與Convert.ToString
相同。
G
格式說明符文檔指出:
結果字符串受當前NumberFormatInfo對象的格式信息影響。 下表列出了控制結果字符串格式的NumberFormatInfo屬性。
...並列出NegativeSign
, NumberDecimalSeparator
和PositiveSign
。 您的代碼沒有設置任何這些屬性,這就是為什么它沒有改變的原因。 如果您寫:
culture.NumberFormat.NumberDecimalSeparator = "#"
例如,那將影響Convert.ToString
的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.