C# float.tryparse для французской Культуры

У меня есть ввод данных пользователем, который может содержать значения плавающие в пределах от: 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 от"." к"", но являюсь там корректным/лучше способом сделать это через Культуру?Спасибо

10
задан Murtaza Mandvi 27 April 2010 в 16:02
поделиться

3 ответа

Вы можете использовать перегрузку , которая принимает поставщика формата.Вы можете передать информацию о французской культуре:

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.
15
ответ дан 3 December 2019 в 17:57
поделиться

Вы можете передать культуру внутри метода TryParse :

public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out float result);
1
ответ дан 3 December 2019 в 17:57
поделиться
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
}
6
ответ дан 3 December 2019 в 17:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: