Подтвердить что ты не робот

Преобразование double в строку с N десятичными знаками, точкой в ​​виде десятичного разделителя и без разделителя тысяч

Мне нужно преобразовать десятичную строку в строку с N десятичными знаками (два или четыре) и разделителем NO тыс.

'XXXXXXX (точка) DDDDD'

Проблема с CultureInfo.InvariantCulture заключается в том, что это места "," для разделения тысяч.

ОБНОВЛЕНИЕ

Это должно работать для десятичных и двойных типов.


Мой предыдущий вопрос: Нужно преобразовать double или decimal в строку

4b9b3361

Ответ 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");

Это дает точку в виде десятичного разделителя и не имеет разделителя тысяч независимо от культуры.