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