Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операции над числовыми типами

Тип decimal

Возможно, наиболее интересным числовым типом данных в C# является тип decimal, предназначенный для использования в денежных вычислениях. В типе decimal для представления значений, находящихся в диапазоне от 1Е-28 до 7.9Е+28, используется 128 битов. Вы, конечно, знаете, что в обычных арифметических вычислениях, производимых над числами с плавающей точкой, неоднократные округления значений приводят к неточному результату. Тип данных decimal устраняет ошибки, возникающие при округлении, и может представлять числа с точностью до 28 десятичных разрядов (а в некоторых случаях и до 29 разрядов). Эта способность представлять десятичные значения без ошибок округления особенно полезна, когда рассчитываются финансы.

В качестве примера рассмотрим программу, которая для денежных вычислений использует тип данных decimal. Программа вычисляет баланс после начисления процентов.

/*
Программа демонстрирует использование типа decimal
для финансовых вычислений.
*/

using System;

class UseDecimal {
public static void Main() {
decimal balance;
decimal rate;

// Подсчет нового баланса
balance = 1000.10m;
rate = 0.1m;

При вводе значения типа decimal должны заканчиваться символом m или M.

balance = balance * rate + balance;

Console.WriteLine("Новый баланс: $" + balance);
}
}

Эта программа выводит следующий результат:

Новый баланс: $1100.11

 

· Какие целочисленные типы данных существуют в C#?

· Назовите два типа данных с плавающей точкой.

· Почему тип данных decimal так важен для финансовых вычислений?

 

Над числовыми типами, как и над всеми другими, возможны прежде всего четыре основных операции: создание, уничтожение, выбор, обновление. Специфические операции над числовыми типами - хорошо известные всем арифметические операции: сложение, вычитание, умножение, деление. Операция возведения в степень в некоторых языках также является базовой и обозначается специальным символом или комбинацией символов (^ - в BASIC, ** - в PL/1), в других - выполняется встроенными функциями (pow в C). В языке Pascal возведение в степень выполняется с помощью функций Exp и Ln.

Обратим внимание на то, что операция деления по-разному выполняется для целых и вещественных чисел. При делении целых чисел дробная часть результата отбрасывается, как бы близка к 1 она ни была. В связи с этим в языке PASCAL имеются даже разные обозначения для деления вещественных и целых чисел - операции " / " и " div " соответственно. В других языках оба вида деления обозначаются одинаково, а тип деления определяется типом операндов. Для целых операндов возможна еще одна операция - остаток от деления - ("mod" - в PASCAL, "%" - в C).

Еще одна группа операций над числовыми типами - операции сравнения: "равно", "не равно", "больше", "меньше" и т.п. Существенно, что хотя операндами этих операций являются данные числовых типов, результат их имеет логический тип - "истина" или "ложь".

Говоря об операциях сравнения, следует обратить внимание на особенность выполнения сравнений на равенство/неравенство вещественных чисел. Поскольку эти числа представляются в памяти с некоторой (не абсолютной) точностью, сравнения их не всегда могут быть абсолютно достоверны.

Поскольку одни и те же операции допустимы для разных числовых типов, возникает проблема арифметических выражений со смешением типов. Это создает некоторые неудобства для программистов, так как в реальных задачах выражения со смешанными типами встречаются довольно часто. Поэтому большинство языков допускает выражения, операнды которых имеют разные числовые типы, но обрабатываются такие выражения в разных языках по-разному. В языке PL/1, например, все операнды выражения приводятся к одному типу - к типу той переменной, в которую будет записан результат, а затем уже выражение вычисляется. В языке же C преобразование типов выполняется в процессе вычисления выражения, при выполнении каждой отдельной операции, без учета других операций; каждая операция вычисляется с точностью самого точного участвующего в ней операнда.

Программист, использующий выражения со смешением типов, должен точно знать правила их вычисления для выбранного языка.

 

<== предыдущая лекция | следующая лекция ==>
Десятичные типы | Литералы
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 577; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.