У меня есть ввод данных пользователем, который может содержать значения плавающие в пределах от: 3.06 ИЛИ 3,06 культура, в которой мы находимся, является французской и таким образом когда вводы данных пользователем 3.06 и я выполняю float.tryParse по этому значению, это не становится преобразованным в 3,06 в новую переменную (введите плавание),
// 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.
Вы можете передать культуру внутри метода TryParse
:
public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out float result);
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
}