×
Traktatov.net » C# 4.0: полное руководство » Читать онлайн
Страница 33 из 650 Настройки

>// Использовать тип 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 по-прежнему остаются действительными в С#.