Преобразование double в строку с N десятичными знаками, точкой в виде десятичного разделителя и без разделителя тысяч
Мне нужно преобразовать десятичную строку в строку с N десятичными знаками (два или четыре) и разделителем NO тыс.
'XXXXXXX (точка) DDDDD'
Проблема с CultureInfo.InvariantCulture
заключается в том, что это места "," для разделения тысяч.
ОБНОВЛЕНИЕ
Это должно работать для десятичных и двойных типов.
Мой предыдущий вопрос: Нужно преобразовать double или decimal в строку
Ответы
Ответ 1
Для a decimal
используйте метод ToString и укажите инвариантную культуру для получения периода как десятичного разделителя:
value.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)
Тип long
является целым числом, поэтому не существует частичной части. Вы можете просто форматировать его в строку и добавить несколько нулей:
value.ToString() + ".00"
Ответ 2
Очень просто указать собственный разделитель десятичной дроби. Просто взял меня около 2 часов, чтобы понять это: D.
Вы видите, что вы использовали текущую другую культуру, которую вы указали правильно? Ну, единственное, что нужно парсеру, это IFormatProvider. Если вы дадите
CultureInfo.CurrentCulture.NumberFormat
в качестве форматирования, он будет форматировать двойной в соответствии с вашей текущей культурой NumberDecimalSeparator
. То, что я сделал, это просто создать новый экземпляр класса NumberFormatInfo
и установить его свойство NumberDecimalSeparator
в зависимости от того, какую строку разделителя я хотел. Полный код ниже:
double value = 2.3d;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = "-";
string x = value.ToString(nfi);
Результат? "2-3"
Ответ 3
Я предпочитаю использовать ToString()
и IFormatProvider
.
double value = 100000.3
Console.WriteLine(value.ToString("0,0.00", new CultureInfo("en-US", false)));
Результат: 10,000.30
Ответ 4
double valor=3,14159
string v = valor.Replace(",",".");
Console.WriteLine(v);
Выход: 3.14159
Ответ 5
Ниже приведено подробное описание строк числового формата
https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
Я думаю, вы могли бы использовать:
value.ToString( "F" + NumberOfDecimals)
value = 10,502
value.ToString("F2") //10,50
value = 10,5
value.ToString("F2") //10,50
Ответ 6
Вы можете просто использовать decimal.ToString()
Для двух десятичных знаков
myDecimal.ToString("0.00");
Для четырех десятичных знаков
myDecimal.ToString("0.0000");
Это дает точку в виде десятичного разделителя и не имеет разделителя тысяч независимо от культуры.