Значение с плавающей запятой должно иметь 2 десятичных знака - PullRequest
0 голосов
/ 20 апреля 2011

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

Забыл упомянуть, что мой totalamount объявлен как float

Amount[index] // На эту сумму объявлен arraylist

totalAmount += float.Parse(Amount[index].ToString()); 

Здесь, после всех дополнений, выполненных после цикла, я бы хотел получить требуемое

Пример кода конвертации

if (totalAmount.ToString().Contains("."))
        {
            string[] b = totalAmount.ToString().Split('.');
            Dollars = b[0].ToString().PadLeft(10, (char)48);
            cents = b[1].ToString().PadRight(2, (char)48).Substring(0, 2);
        }
        else
        {
            Dollars = totalAmount.ToString().PadLeft(10, (char)48);
            cents = "00";
        }

        FormattedTotalAmounts = Dollars + cents; // Here i am getting the output as i said

Ответы [ 6 ]

5 голосов
/ 20 апреля 2011
string totalAmountFormatted = totalAmount.ToString("F2");

Это форматирует общую сумму как число с фиксированной точкой (F) с двумя десятичными знаками (2).Подробнее об этих строках формата см. В следующих двух статьях MSDN:

1 голос
/ 20 апреля 2011
String.Format("{0:0.00}", 756.4);
0 голосов
/ 20 апреля 2011

В вашем коде измените это

if (totalAmount.ToString().Contains("."))
    {
        string[] b = totalAmount.ToString().Split('.');
        Dollars = b[0].ToString().PadLeft(10, (char)48);
        cents = b[1].ToString().PadRight(2, (char)48).Substring(0, 2);
    }
    else
    {
        Dollars = totalAmount.ToString("F2").PadLeft(10, (char)48);//Necessary change
        cents = "00";
    }

    FormattedTotalAmounts = Dollars + cents; 
0 голосов
/ 20 апреля 2011

вы можете использовать числовой формат в вашей ToString как

SomeVar.ToString("#,##0.00")
0 голосов
/ 20 апреля 2011

Во-первых, я думаю, что вы, вероятно, должны использовать Decimal, если это финансовые данные.

Во-вторых, числовые значения не имеют конечных пробелов, а строки -.

РЕДАКТИРОВАТЬ: тег C # 2.0 добавлен - LINQ удален.

Decimal total;
foreach (object oAmount in Amount)
{
   Decimal amount = (Decimal)oAmount;
   total += amount;
}
String FormattedTotalAmounts = total.ToString("G");

Передача "F" в ToString будет работать одинаково хорошо.

РЕДАКТИРОВАТЬ в ответ на комментарий.

   String FormattedTotalAmounts = total.ToString("0000000000.00");

дает 10 0 слева и 2 0 справа.

0 голосов
/ 20 апреля 2011

Попробуйте это:

decimal t = 756.40m;
MessageBox.Show(t.ToString("0.00"));
...