Как форматировать строку в деньги
У меня есть строка типа 000000000100
, которую я хотел бы преобразовать в 1.00 и наоборот.
Ведущий нуль будет удаляться, последние две цифры - десятичной.
Я приведу еще один пример:
000000001000 <=> 10.00
000000001005 <=> 10.05
000000331150 <=> 3311.50
Ниже код, который я пытаюсь сделать, он дает мне результат без десятичной дроби:
amtf = string.Format("{0:0.00}", amt.TrimStart(new char[] {'0'}));
Ответы
Ответ 1
Преобразуйте строку в десятичную, затем разделите ее на 100 и примените строку формата валюты:
string.Format("{0:#.00}", Convert.ToDecimal(myMoneyString) / 100);
Отредактировано для удаления символа валюты в соответствии с запросом и преобразования в десятичную.
Ответ 2
вам нужно будет сначала преобразовать его в десятичную, затем отформатировать в формате денег.
Пример:
string myValue = "000000001000";
decimal moneyvalue = 1921.39m;
string moneyValue = String.Format("{0:C}", moneyvalue);
Ответ 3
Это работает!
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
Выход
Order Total: $1,921.39
Ответ 4
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
Консольный выход:
![]()
Ответ 5
string s ="000000000100";
decimal iv = 0;
decimal.TryParse(s, out iv);
Console.WriteLine((iv / 100).ToString("0.00"));
Ответ 6
//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");
Ответ 7
Как только у вас есть строка в двойном/десятичном значении, чтобы получить правильное форматирование для использования определенной локали
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
Ответ 8
Попробуйте просто, как это
var amtf = $"{Convert.ToDecimal(amt):#0.00}";
Ответ 9
Разделите сначала строку до десятичной.
Ответ 10
Попробуйте что-то вроде этого:
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
Ответ 11
var tests = new[] {"000000001000", "000000001005", "000000331150"};
foreach (var test in tests)
{
Console.WriteLine("{0} <=> {1:f2}", test, Convert.ToDecimal(test) / 100);
}
Поскольку вы не запрашивали символ валюты, я использовал "f2" вместо "C"
Ответ 12
попробуйте
amtf = amtf.Insert(amtf.Length - 2, ".");
Ответ 13
вы также можете сделать:
string.Format("{0:C}", amt)