C # конвертировать int в строку валюты с десятичными разрядами - PullRequest
5 голосов
/ 19 июля 2011

Конвертирование.Бла ... возможно, самый запутанный аспект языка для меня.

В любом случае, я хочу конвертировать int 999 в $ 9,99.Использование ToString ("C") дает мне $ 999,00, что не то, что я хочу.

Все мои целые числа будут работать таким образом, то есть, если цена чего-то равна 12,30, значение int будет 1230. Два десятичных знака,всегда.Я знаю, что для большинства это будет легко, я не могу найти что-либо здесь или через Google.

Кроме того, любые ресурсы, которые у вас есть по конверсиям, будут высоко оценены!

Ответы [ 3 ]

16 голосов
/ 19 июля 2011

Если ваша исходная переменная объявлена ​​как int, то одним из возможных решений является деление на «100 м» вместо «100». В противном случае он выполнит целочисленное деление. например:

    int originalValue = 80;
    string yourValue = (originalValue / 100m).ToString("C2");

Это установит yourValue на «0,80 $». Если вы не укажете «m», он будет установлен в «$ 0.00».

ПРИМЕЧАНИЕ. «M» указывает компилятору обрабатывать 100 как десятичное число, и неявное приведение произойдет к originalValue как части деления.

5 голосов
/ 19 июля 2011

Просто разделите на 100:

yourValue = (originalValue / 100).ToString("C");<br>
// C will ensure two decimal places... <br>
// you can also specificy en-US or whatever for you currency format

См. здесь для деталей формата валюты.

ОБНОВЛЕНИЕ:

Я должен быть медленным сегодня ... вам также придется конвертировать в двойной, или вы потеряете свои десятичные разряды:

yourValue = ((double)originalValue / 100).ToString("C");

(В качестве альтернативы, вы можете использовать десятичное число, так как обычно это предпочтительный тип для валюты ).

0 голосов
/ 28 марта 2018

Я получил функцию для тех, кому просто нужно делить нули на основе определенного разделителя.Например: 1250000 -> 1 250 000 ..

public static string IntToCurrencyString(int number, string separator)
{
    string moneyReversed = "";

    string strNumber = number.ToString();

    int processedCount = 0;

    for (int i = (strNumber.Length - 1); i >= 0; i--)
    {
        moneyReversed += strNumber[i];

        processedCount += 1;

        if ((processedCount % 3) == 0 && processedCount < strNumber.Length)
        {
            moneyReversed += separator;
        }
    }

    string money = "";

    for (int i = (moneyReversed.Length - 1); i >= 0; i--)
    {
        money += moneyReversed[i];
    }

    return money;
}

Наслаждайтесь!

...