C# Преобразование валюты в строку, удаление десятичной точки, но сохранение десятичных знаков, добавление 0 для фиксированной ширины

Как мне конвертировать денежную сумму, подобную этой

38.50

, до фиксированной ширины, как это

000003850

Я не хочу добавлять запятые и десятичные знаки, поскольку некоторые предлагаемые здесь ответы объясняют, как это сделать. Я также не хочу удалять десятичные знаки, я хочу удалить только десятичную точку.


person cd491415    schedule 12.03.2019    source источник
comment
что ты уже испробовал? Получить 3850 из 38.50 должно быть так же просто, как умножить на 100.   -  person Camilo Terevinto    schedule 13.03.2019
comment
Изучите строки числового формата.   -  person Dour High Arch    schedule 13.03.2019


Ответы (2)


Вы можете использовать string.Format() с описателями настраиваемого формата. Подробнее см. здесь.

double dollars = 38.50;   // your value
int temp = (int)(dollars * 100);   // multiplication to get an integer
string result = string.Format("{0:000000000}", temp);

// Output: 000003850
person manaszon    schedule 12.03.2019
comment
Это тоже работает. Я только что использовал свое решение ниже, но приму ваш ответ. Спасибо - person cd491415; 13.03.2019

Выяснил это благодаря @ReedCopsey в Как удалить десятичную точку из десятичного числа в С#?.

decimal amount = 38.50m;
int fixed_amount = (int)Math.Truncate(amount * 100);
Console.WriteLine(fixed_amount.ToString("D9"));

ВЫХОД:

000003850
person cd491415    schedule 12.03.2019