不同的文化采用不同的小数点分隔符:一个点(1.23)或逗号(1,23)或-波斯(伊朗)的情况下,-a momayyez或斜线可能会发现(1月23日.或1/23).我一直在测试我的库,它涉及大量的数字解析(TimeSpanParser),所以一直在测试.NET处理各种数字格式.
当使用"F"十进制格式或数字("N")格式输出时,除N'Ko("nqo"或"nqo-GN")外,所有文化都显示2个小数位.为什么会这样?
下面的代码示例说明了这一点,但可能没有必要理解或遵循下面的代码来回答这个问题.
简述:
Console.WriteLine((1.23456).ToString("F", new CultureInfo("en-US"))); // 1.23 (2 dp in every culture other than "nqo" and "nqo-GN")
Console.WriteLine((1.23456).ToString("F", new CultureInfo("nqo"))); // 1.235
Run Code Online (Sandbox Code Playgroud)
更详细地说:
double number = 1.2345678;
Console.WriteLine($"Testing {number.GetType().FullName}");
Console.WriteLine($"value: {number}");
foreach (var culture in new string[] { "", "en-US", "fr-FR", "fa-IR", "nqo", "nqo-GN" } ) {
var cultureinfo = new System.Globalization.CultureInfo(culture);
string fformat = number.ToString("F", cultureinfo);
Console.WriteLine($"{fformat} -- {cultureinfo.EnglishName} -- \"{cultureinfo.Name}\"");
}
Run Code Online (Sandbox Code Playgroud)
输出:
Testing System.Double
value: 1.2345678
1.23 -- Invariant …Run Code Online (Sandbox Code Playgroud)