Float.Parse()忽略小数逗号

时间:2017-03-17 09:29:00

标签: c# parsing floating-point

我从数据库中获取了一些百分比值,我需要将它们格式化为具有正确的千位分隔符,小数位数和最后一个百分号。

我试过了:

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()让一切都搞砸了。我使用不同的文化设置和格式化字符串(切换逗号和句号),但它只会使它再次恶化。

2 个答案:

答案 0 :(得分:2)

将当前的Culture传递给Parse方法:double.Parse( text, CultureInfo.CurrentCulture )

但是,这仅适用于使用逗号作为小数分隔符的区域设置的系统。 如果您希望在其他语言环境中使用它,则应将CurrentCulture替换为首先输入数据时使用的特定CultureInfo实例。

答案 1 :(得分:0)

标题具有误导性。实际问题是ToString()函数。在格式字符串中,我添加了%符号,公平地说,我没有添加原始帖子,因为我忘了它。它会自动将数字乘以100.所以我的格式字符串现在是"#,##0.00\%"