我在这里有点困惑。
我应该使用什么
Console.WriteLine((val/1085).ToString("N"));
VS
Console.WriteLine(String.Format("{0:N}", (val/1085)));
另外,我如何适应InvariantCulture?任何最佳做法:)?
答案 0 :(得分:20)
其实我更喜欢第三种形式:
Console.WriteLine("{0:N}", val / 1085);
Console.WriteLine
可以为您执行String.Format
。
Console.WriteLine
不允许您提供文化。如果这是您想要的,您仍然必须使用String.Format
。如:
String.Format(CultureInfo.InvariantCulture, "{0:N}", 123456789);
我不建议使用它,因为国际用户在阅读时会遇到问题。对我来说123,456,789.00
看起来很奇怪。
答案 1 :(得分:3)
对于格式化+文化,我更喜欢:
.ToString("####0.00",CultureInfo.InvariantCulture)
或
.ToString("N",CultureInfo.InvariantCulture)
答案 2 :(得分:1)
在日期时间,可以同时使用两者。我更喜欢使用并查看第一个解决方案(当然缺少括号)。
当你有一些字符串与某些参数有间隙时,String.Format会更有用。然后它是一种杀手级方法,它可以很好地帮助您组织代码。
答案 3 :(得分:0)
使用字符串插值和扩展方法,我发现了一种不变的通用方法来解决该问题,如下所示:
public static class Extensions
{
public static string ToStringInvariant<T>(this T obj)
{
return System.FormattableString.Invariant($"{obj}");
}
}
用法很简单,只需使用.ToStringInvariant()
而不是.ToString()
。优点是它适用于任何数据类型。