Читаем Полное руководство. С# 4.0 полностью

Ниже приведен пример программы, в которой тип decimal используется в кон кретном финансовом расчете. В этой программе цена со скидкой рассчитывается на основании исходной цены и скидки в процентах. // Использовать тип 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 можно присвоить целое значение без суффикса m, например 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 по-прежнему оста ются действительными в С#.

Для того чтобы присвоить значение символьной переменной, достаточно заклю чить это значение (т.е. символ) в одинарные кавычки. Так, в приведенном ниже фраг менте кода переменной ch присваивается символ X. char ch; ch = 'X';

Значение типа char можно вывести на экран с помощью метода WriteLine. Например, в следующей строке кода на экран выводится значение переменной ch. Console.WriteLine("Значение ch равно: " + ch);

Несмотря на то что тип char определен в C# как целочисленный, его не следует путать со всеми остальными целочисленными типами. Дело в том, что в C# отсутству ет автоматическое преобразование символьных значений в целочисленные и обратно.

Например, следующий фрагмент кода содержит ошибку. char ch; ch = 88; // ошибка, не выйдет

Ошибочность приведенного выше фрагмента кода объясняется тем, что 88 — это целое значение, которое не преобразуется автоматически в символьное. При попытке скомпилировать данный фрагмент кода будет выдано соответствующее сообщение об ошибке. Для того чтобы операция присваивания целого значения символьной пере менной оказалась допустимой, необходимо осуществить приведение типа, о котором речь пойдет далее в этой главе. Логический тип данных

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT