我从数据库中获取了一些百分比值,我需要将它们格式化为具有正确的千位分隔符,小数位数和最后一个百分号。
我试过了:
string text = "105,3"; //example, formatting like database input
string format = "#,##0.##";
e.Row.Cells[i].Text = double.Parse(text).ToString(format);
奇怪的是,这会返回1053,00%
。我怎么做才能返回105,30%
? (十进制逗号是因为系统区域设置是德语,所以它应该如何)
编辑:用句点替换逗号会导致10530.00%
。对我来说没有任何意义了。
edit2:float.Parse()
实际上工作得很好。 ToString()
让一切都搞砸了。我使用不同的文化设置和格式化字符串(切换逗号和句号),但它只会使它再次恶化。
答案 0 :(得分:2)
将当前的Culture传递给Parse
方法:double.Parse( text, CultureInfo.CurrentCulture )
但是,这仅适用于使用逗号作为小数分隔符的区域设置的系统。
如果您希望在其他语言环境中使用它,则应将CurrentCulture
替换为首先输入数据时使用的特定CultureInfo实例。
答案 1 :(得分:0)
标题具有误导性。实际问题是ToString()
函数。在格式字符串中,我添加了%
符号,公平地说,我没有添加原始帖子,因为我忘了它。它会自动将数字乘以100.所以我的格式字符串现在是"#,##0.00\%"
。