2011-02-03 2 views

ответ

8

Вы должны, вероятно, использовать Decimal тип данных, а затем вместо того, чтобы пытаться конвертировать центов в доллары, использовать одно стандартное обозначение:

Decimal amount = .25M; 
String.Format("Amount: {0:C}", amount); 

Выход: Amount: $0.25;

+0

Важной причиной использовать Decimal денег: HTTP: //stackoverflow.com/questions/316727/is-a-double-really-unsuitable-for-money – Olhovsky

+0

@TheBigO yup, я действительно связан с этим в теперь удаленном ответе, приведенном ниже другим пользователем. –

+0

На самом деле, я бы поспорил с Decimal за деньги (а скорее за конкретный денежный тип, включая «все детали поддержки»), но это лучше, чем использование float - это все еще относительная точность и может, в дегенеративных случаях или экстремумы, демонстрируют те же «проблемы», что и использование float. –

5
class Money 
{ 
    public int Dollar {get; set;} 
    public int Cent { get; set;} 

    public Money(int cents) 
    { 
     this.Dollar = Math.Floor(cents/100); 
     this.Cent = cents%100; 
    } 
} 

, и вы можете использовать его как так

int cents = Convert.ToInt32(Console.Readline("Please enter cents to convert:")) 
Money money = new Money(cents); 
Console.Writeline("$" + money.Dollar + "." + money.Cent); 
+0

Должен ли использоваться массив? – armin

+0

хорошо, зависит от того, сколько из них вам нужно. вы можете создать список money = new List (); для хранения большого количества этих – Joe

+0

console.readline (frome user), console.writeline (у вас есть X cent или x Dollar и x cent) – armin

1

Я думаю, что это Лучший ответ я пишу с массивом

class Program 
{ 
    static void Main(string[] args) 
    { 

     Console.WriteLine("Please input your cent or dollar"); 

     int coins = int.Parse(Console.ReadLine()); 

     int[] dollars = new int[2]; 

     dollars[0] = coins/100; 
     dollars[1] = coins % 100; 



     Console.WriteLine("{0} dollar and {1} coins", dollars[0], dollars[1]); 
     Console.ReadLine(); 






    } 
Смежные вопросы