我想确保我的应用程序中的某些数字在打印时没有任何分隔符、分组等,无论当前环境如何。似乎以下两种方法产生相同的结果(可能还有更多):
123456789.ToString("0");
123456789.ToString(CultureInfo.InvariantCulture);
您是否知道任何边缘情况或怪癖?哪一个更“正确”?您会使用哪一个?
我曾经使用第二个,但最近我找到了第一个并开始使用它,因为它不需要额外的using System.Globalization
.
根据这里的答案和讨论,我做了一些更多的调查。这是我发现的:
当你使用12345678.ToString()
没有任何参数,.NET 使用通用的通用格式说明符“G”仅受 NumberFormatInfo.NegativeSign、NumberFormatInfo 影响。 NumberDecimalSeparator、NumberFormatInfo.NumberDecimalDigits 和 NumberFormatInfo.PositiveSign。对我来说,这表明在任何文化中12345678.ToString()
应始终生成“12345678”。
如果你想单独的数字,你需要使用数字格式说明符“N”(或者,当然,提供自定义格式字符串)。数字分组也适用于“C”和“P”。
The 不变的文化确实确实指定数字分组(当然是 3 位数字)和数字分隔符。所以原因是123456789.ToString(CultureInfo.InvariantCulture)
产生“123456789”并不是因为文化不变,而是因为默认的通用数字格式说明符“G”。
所以我想说结论是完全没问题不用担心关于任何额外的参数只需使用:
12345678.ToString()
我认为这是所有情况下最好的,因为这意味着通常您甚至不需要打电话ToString()
因为大多数打印/写入函数接受各种参数并执行ToString()
为你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)