Member 11381811 Ответов: 2

Как преобразовать строку в десятичную


Я хочу преобразовать строку в десятичную, я пробую так много комбинаций, что не могу получить правильное число.
строка a = "14,8";
строка b = "10,36";

Что я уже пробовал:

string a = "14,8";
string b = "10,36";

decima c = MyClass.CustomDecimalParse(строковое значение); //я получил 148 и 1036 WHYYYYY!!??
public static decimal CustomDecimalParse(string value)
        {
            decimal number = 0;
            return Decimal.TryParse(value, out number) ? number : 0;
        }

2 Ответов

Рейтинг:
17

Richard MacCutchan

Вам нужно использовать стиль культуры и форматирование, так как ваши числовые форматы не являются стандартными. Видеть Десятичный.Метод TryParse (Система) | Microsoft Docs[^].


CPallini

5.

Richard MacCutchan

Спасибо, это было быстро. :)

Member 11381811

Если я установить свойство по умолчанию не работает..

Richard MacCutchan

Тогда не используйте дефолт, используйте правильный.

Рейтинг:
0

F-ES Sitecore

Это вопрос глобализации. В одной культуре "1234" - это 1234, а в другой-1.234. Компьютер использует любую свою текущую культуру, так что это может быть где-то в настройках, в операционной системе и т. д. Если вы хотите использовать определенную культуру, то укажите ее в своем методе TryParse. Например, если вы используете немецкий язык (de), который распознает "14,8" как "14,8". Поэтому используйте предполагаемую культуру или измените общую культуру контекста, в котором выполняется ваш код.

public static decimal CustomDecimalParse(string value)
{
    decimal number = 0;
    return Decimal.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("de-DE"), out number) ? number : 0;
}