法国文化的C#float.tryparse

我有一个用户输入,可以包含浮点值范围:3.06或3,06我们所处的文化是法语,因此当用户输入3.06并且我在此值上运行float.tryParse时它不会转换为3.06一个新变量(类型float)

// inputUsedAmount.Value from UI is : 3.06 float usedAmount = 0.0f; float.TryParse(inputUsedAmount.Value, out usedAmount); // returns false 

我可以简单地从“。”输入从UI输入的金额。 “,”,但通过文化有没有优雅/更好的方式来做到这一点? 谢谢

您可以使用带有格式提供程序的重载 。 您可以通过法国文化信息:

 string value; NumberStyles style; CultureInfo culture; double number; value = "1345,978"; style = NumberStyles.AllowDecimalPoint; culture = CultureInfo.CreateSpecificCulture("fr-FR"); if (Double.TryParse(value, style, culture, out number)) Console.WriteLine("Converted '{0}' to {1}.", value, number); else Console.WriteLine("Unable to convert '{0}'.", value); // Displays: // Converted '1345,978' to 1345.978. 
 float usedAmount; // try parsing with "fr-FR" first bool success = float.TryParse(inputUsedAmount.Value, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.GetCultureInfo("fr-FR"), out usedAmount); if (!success) { // parsing with "fr-FR" failed so try parsing with InvariantCulture success = float.TryParse(inputUsedAmount.Value, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out usedAmount); } if (!success) { // parsing failed with both "fr-FR" and InvariantCulture } 

你可以在TryParse方法中传递文化:

 public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out float result);