>// Использовать тип decimal для расчета скидки.
>using System;
>class UseDecimal {
> static void Main() {
> decimal price;
> decimal discount;
> decimal discounted_price;
> // Рассчитать цену со скидкой,
> price = 19.95m;
> discount = 0.15m; // норма скидки составляет 15%
> discounted_price = price - ( price * discount);
> Console.WriteLine("Цена со скидкой: $" + discounted_price);
> }
>}
Результат выполнения этой программы выглядит следующим образом.
>Цена со скидкой: $16.9575
Обратите внимание на то, что значения констант типа >decimal
в приведенном выше примере программы указываются с суффиксом m. Дело в том, что без суффикса m эти значения интерпретировались бы как стандартные константы с плавающей точкой, которые несовместимы с типом данных decimal. Тем не менее переменной типа >decimal
можно присвоить целое значение без суффикса т, например 10. (Подробнее о числовых константах речь пойдет далее в этой главе.)
Рассмотрим еще один пример применения типа >decimal
. В этом примере рассчитывается будущая стоимость капиталовложений с фиксированной нормой прибыли в течение ряда лет.
>/*
>Применить тип decimal для расчета будущей стоимости капиталовложений.
>*/
>using System;
>class FutVal {
> static void Main() {
> decimal amount;
> decimal rate_of_return;
> int years, i;
> amount = 1000.0M;
> rate_of_return = 0.07M;
> years = 10;
> Console.WriteLine("Первоначальные капиталовложения: $" + amount);
> Console.WriteLine("Норма прибыли: " + rate_of_return);
> Console.WriteLine("В течение " + years + " лет");
> for(i =0; i < years; i++)
> amount = amount + (amount * rate_of_return);
> Console.WriteLine("Будущая стоимость равна $" + amount);
> }
>}
Вот как выглядит результат выполнения этой программы.
>Первоначальные капиталовложения: $1000
>Норма прибыли: 0.07
>В течение 10 лет
>Будущая стоимость равна $1967.151357289565322490000
Обратите внимание на то, что результат выполнения приведенной выше программы представлен с точностью до целого ряда десятичных разрядов, т.е. с явным избытком по сравнению с тем, что обычно требуется! Далее в этой главе будет показано, как подобный результат приводится к более "привлекательному" виду.
Символы
В C# символы представлены не 8-разрядным кодом, как во многих других языках программирования, например C++, а 16-разрядным кодом, который называется уникодом (Unicode). В уникоде набор символов представлен настолько широко, что он охватывает символы практически из всех естественных языков на свете. Если для многих естественных языков, в том числе английского, французского и немецкого, характерны относительно небольшие алфавиты, то в ряде других языков, например китайском, употребляются довольно обширные наборы символов, которые нельзя представить 8-разрядным кодом. Для преодоления этого ограничения в C# определен тип char, представляющий 16-разрядные значения без знака в пределах от 0 до 65 535. При этом стандартный набор символов в 8-разрядном коде ASCII является подмножеством уникода в пределах от 0 до 127. Следовательно, символы в коде ASCII по-прежнему остаются действительными в С#.