我需要在将double转换为字符串时保持文化,并且也只舍入到一个小数位。
将double转换为带有culture的字符串:
((12275454.8).ToString("N", new CultureInfo("sl-SI")));
提供输出:
12.275.454,80
将double转换为仅包含一个小数的字符串:
string.Format("{0:F1}",12275454.8)
提供输出:
12275454.8
第二个输出没有文化,第一个输出没有舍入到一个小数位。如何结合这两种方法?
答案 0 :(得分:2)
在第一个示例中使用第二个示例的格式字符串,即:
((12275454.8).ToString("N1", new CultureInfo("sl-SI")));
编辑:根据请求将格式从F1更改为N1。两者之间的区别在于N还使用了数千个分隔符,而F则没有。有关详细信息,请参阅https://msdn.microsoft.com/en-US/library/dwhawy9k(v=vs.110).aspx
答案 1 :(得分:1)
您可以将"sl-SI"
文化设置为默认:
using System.Threading;
...
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sl-SI");
string test = string.Format("{0:F1}",12275454.8);
如果您只希望try..finally
区分代码块,请添加"sl-SI"
:
var savedCulture = Thread.CurrentThread.CurrentCulture;
try {
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sl-SI");
// Let's work with "sl-SI" for a while
string test = string.Format("{0:F1}",12275454.8);
...
}
finally {
Thread.CurrentThread.CurrentCulture = savedCulture;
}