使用逗号和点将float转换为字符串

时间:2010-12-06 13:33:55

标签: c# silverlight floating-point

我有一个可空的浮动。内部小数位可以用点或逗号分隔,例如1.2或1,2。我需要将此浮点数作为字符串与正则表达式进行比较。如果我使用Convert.toString方法,带逗号的浮点数为12而不是1.2。如何在不丢失逗号或点的情况下将float转换为String?我试图用不同的文化转换它。

感谢您的帮助

6 个答案:

答案 0 :(得分:3)

对此的解决方案如下:

float? num = 1.2f;
string floatAsString = string.Format("{0:f}", num.Value);

在使用该值之前,您可能需要检查HasValue属性是否为true。有关更多示例:http://alexonasp.net/samples/stringformatting/

答案 1 :(得分:0)

带掩码的String.Format()函数。但是,为了进行比较,您可以将字符串转换为数字而不是将数字转换为字符串吗?它必须是正则表达式比较吗?

答案 2 :(得分:0)

您确定文本框允许两者“。”和“,”作为小数分隔符(与分组字符相对,也称为千位分隔符)?

当您确定只获得小数分隔符且没有分组字符时,请将“,”替换为“。”。在使用带有InvariantCulture的TryParse将字符串转换为浮点数之前 或者在代码中使用与客户端相同的文化,因此两者都将使用相同的小数分隔符。

正如其他人提到的,浮点数不具有各种小数分隔符的概念。

答案 3 :(得分:0)

如果它是WinForm应用程序,则有一个静态变量Application.CurrentCulture.NumberFormat.NumberDecimalSeparator

根据它的价值,转换ToString()时会得到不同的结果。 尝试操作此参数以获得必要的结果。

答案 4 :(得分:0)

好的我解决了这个问题。我在我的xaml中做了一个只允许用逗号作为分隔符输入值的转换器,所以如果只有两个内部小数位,我就不需要任何检查。谢谢你的帮助

答案 5 :(得分:-1)

尝试:

string s = yourFloat.ToString();

如果您想确保输出的格式正确,建议使用不变文化,但如果文化中没有输出逗号或一个点。

我还建议使用正则表达式来验证float的值。