У меня есть строка вроде 000000000100
, которую я хотел бы преобразовать в 1,00 и наоборот.
Ведущий ноль будет удален, две последние цифры будут десятичными.
Приведу еще пример:
000000001000 <=> 10.00
000000001005 <=> 10.05
000000331150 <=> 3311.50
Ниже приведен код, который я пытаюсь получить, он дает мне результат без десятичной дроби:
amtf = string.Format("{0:0.00}", amt.TrimStart(new char[] {'0'}));
PadLeft(12,'0')
Ответы:
Преобразуйте строку в десятичную дробь, затем разделите ее на 100 и примените строку формата валюты:
string.Format("{0:#.00}", Convert.ToDecimal(myMoneyString) / 100);
Отредактировано, чтобы удалить символ валюты по запросу и вместо этого преобразовать в десятичное.
источник
0:#.00
float
илиdouble
представлять валюту.вам нужно сначала преобразовать его в десятичный формат, а затем отформатировать в денежном формате.
EX:
decimal decimalMoneyValue = 1921.39m; string formattedMoneyValue = String.Format("{0:C}", decimalMoneyValue);
рабочий пример: https://dotnetfiddle.net/soxxuW
источник
decimal value = 0.00M; value = Convert.ToDecimal(12345.12345); Console.WriteLine(value.ToString("C")); //OutPut : $12345.12 Console.WriteLine(value.ToString("C1")); //OutPut : $12345.1 Console.WriteLine(value.ToString("C2")); //OutPut : $12345.12 Console.WriteLine(value.ToString("C3")); //OutPut : $12345.123 Console.WriteLine(value.ToString("C4")); //OutPut : $12345.1234 Console.WriteLine(value.ToString("C5")); //OutPut : $12345.12345 Console.WriteLine(value.ToString("C6")); //OutPut : $12345.123450
Вывод в консоль:
источник
Оно работает!
decimal moneyvalue = 1921.39m; string html = String.Format("Order Total: {0:C}", moneyvalue); Console.WriteLine(html);
Вывод
Order Total: $1,921.39
источник
Если у вас есть строка в двойном / десятичном формате, чтобы привести ее в правильное форматирование для использования в конкретной локали
double amount = 1234.95; amount.ToString("C") // whatever the executing computer thinks is the right fomat amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-ie")) // €1,234.95 amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("es-es")) // 1.234,95 € amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-GB")) // £1,234.95 amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-au")) // $1,234.95 amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-us")) // $1,234.95 amount.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-ca")) // $1,234.95
источник
GetCultureInfo
похоже, не существует в UWP.string s ="000000000100"; decimal iv = 0; decimal.TryParse(s, out iv); Console.WriteLine((iv / 100).ToString("0.00"));
источник
float
илиdouble
представлять валюту.Попробуй просто вот так
var amtf = $"{Convert.ToDecimal(amt):#0.00}";
источник
//Extra currency symbol and currency formatting: "€3,311.50": String result = (Decimal.Parse("000000331150") / 100).ToString("C"); //No currency symbol and no currency formatting: "3311.50" String result = (Decimal.Parse("000000331150") / 100).ToString("f2");
источник
вы также можете:
string.Format("{0:C}", amt)
источник
Сначала выполните синтаксический анализ вашей строки до десятичной дроби.
источник
Попробуйте что-то вроде этого:
decimal moneyvalue = 1921.39m; string html = String.Format("Order Total: {0:C}", moneyvalue); Console.WriteLine(html);
источник
var tests = new[] {"000000001000", "000000001005", "000000331150"}; foreach (var test in tests) { Console.WriteLine("{0} <=> {1:f2}", test, Convert.ToDecimal(test) / 100); }
Поскольку вы не запрашивали символ валюты, я использовал «f2» вместо «C».
источник
пытаться
amtf = amtf.Insert(amtf.Length - 2, ".");
источник