Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 14
Текст из файла (страница 14)
Например, метод Яцгг (), определенный в библиотеке классов Яуягещ. Магп, возвращает значение типа г(оцЬ1е, которое представляет собой квадратный корень из аргумента типа г)оцЬ1е, передаваемого данному методу. В приведенном ниже примере программы метод ят(гг () используется для вычисления радиуса окружности по площади круга. // Определить радиус окружности по площади круга. ця1пд Яуясещт с1авя Г1пснас1цв ( вваслс чола Маго () ( ооцЫе гт поцЫе агеа> агеа = 10.0; г = Масш Япгс(агеа / 3.1416) Сопяо1е.ыг1сепьпе("Радиус равен " т г)т ) ) Результат выполнения этой программы выглядит следующим образом: Ралиус равен 1.78412203012729 В приведенном выше примере программы следует обратить внимание на вызов метода Яс(гг О.
Как упоминалось выше, метод яс(гс () относится к классу магь, поэтому в его вызове имя Масп предшествует имени самого метода. Аналогичным образом имя класса Сопяо1е предшествует имени метода Мг1сепфпе () в его вызове. При вызове некоторых, хотя и не всех, стандартных методов обычно указывается имя их класса, как показано в следующем примере. В приведенном ниже примере программы демонстрируется применение нескольких тригонометрических функций, которые относятся к классу магЬ и входят в стандартную библиотеку классов С№. Они также оперируют данными типа с(оцЫе. В этом примере на экран выводятся значения синуса, косинуса и тангенса угла, измеряемого в пределах от 0,1 до 1,0 радиана.
// Продемонстрировать применение тригонометрических // функций. цвтпд Яуясепн с1аяя тг19опощесгу ( всас1с чо1т) Мали () ( ооцЬ1е Гьесат // угол в радианах 68 Часть (. Язык С№ Гоп(пьеса = 0.17 пьета <= 1.07 пьеса = пьеса т 0.1) ( сопво1е.иггсеььпе("синус угла " + сьеса + равен " + МаСЬ.81п(СЬега)); Сопво1е.нг1ге11пе("Косинус угла " т сьепа + равен " т МаСЬ.Сов(СЬеса))7 Сопво1е.нг1ге11пе("Тангенс угла " т пьеса + равен " 4 МаСЬ.Тап(овеса))7 Сопво1е.Иггсегдпе()7 ) ) ) Ниже приведена лишь часть результата выполнения данной программы. Синус угла 0.1 равен 0.0998334166468282 Косинус угла О. 1 равен 0.995004165278026 Тангенс угла 0.1 равен 0.100334672085451 Синус угла 0.2 равен 0.198669330795061 Косинус угла 0.2 равен 0.980066577841242 Тангенс угла 0.2 равен 0.202710035508673 Синус угла 0.3 равен 0.29552020666134 Косинус угла 0.3 равен 0.955336489125606 Тангенс угла 0.3 равен 0.309336249609623 Для вычисления синуса, косинуса и тангенса угла в приведенном выше примере были использованы стандартные методы мась.
51п (), матЬ. Соэ () и матЬ. тап () . Как и метод МаСЬ. 54(гг (), эти тригонометрические методы вызываются с аргументом типа г(опЬ1е и возвращают результат того же типа. Вычисляемые углы должны быть указаны в радианах. Десятичный тип данных Вероятно, самым интересным среди всех числовых типов данных в С№ является тип г(ес17па1, который предназначен для применения в финансовых расчетах. Этот тип имеет разрядность 128 бит для представления числовых значений в пределах от 1Š— 28 до 7,9Е+28. Вам, вероятно, известно, что для обычных арифметических вычислений с плавающей точкой характерны ошибки округления десятичных значений.
Эти ошибки исключаются при использовании типа с(ес17па1, который позволяет представить числа с точностью до 28 (а иногда и 29) десятичных разрядов. Благодаря тому что этот тип данных способен представлять десятичные значения без ошибок округления, он особенно удобен для расчетов, связанных с финансами. Ниже приведен пример программы, в которой тип 4(ес107а1 используется в конкретном финансовом расчете. В этой программе цена со скидкой рассчитывается на основании исходной цены и скидки в процентах. // Испольэовать тип несгеа1 для расчета скидки. овгпч эувгеьи с1авв пвеоесгиа1 ( впаггс чо10 Ма1п() ( Глава 3.
Типы данных, литералы н переменные 69 бесава1 рх1се; бесава1 б1ясоипя) бесава1 б1ясоиптеб ргтсет // Рассчитать цену со скидкой. ргасе = 19.95вт баясоипи = 0.15в) // норма скидки составляет 15$ баясоипиеб рг1се = ргасе — ( рисе * б1ясоипС) Сопяо1е.исалеаапе("цена со скидкой: 5" + баясоипиеб ргасе) ) Результат выполнения этой программы выглядит следующим образом: Цена со скидкой: 516.9575 Обратите внимание на то, что значения констант типа бесава1 в приведенном выше примере программы указываются с суффиксом в. Дело в том, что без суффикса в эти значения интерпретировались бы как стандартные константы с плавающей точкой, которые несовместимы с типом данных бесава1, Тем не менее переменной типа бесава1 можно присвоить целое значение без суффикса в, например 10.
1Подробнее о числовых константах речь пойдет далее в этой главе.) Рассмотрим еще один пример применения типа бесава1, В этом примере рассчитывается будущая стоимость капиталовложений с фиксированной нормой прибыли в течение ряда лег. /* Применить тип бесава1 для расчета будущей стоимости капиталовложений. */ ияапч зуяаевт с1аяя Риииат ( ясасас иоаб ма1п() ( бесава1 авоипт) бес1ва1 саяе ос геиигпт апн уеагя, 1; авоипл 1000.0М; саяе от геяигп = 0.07М) уеагя = 107 сопяо1е.нгасеьапе("первоначальные капиталовложения: 5" ь авоипс) Сопяо1е.игасеЬапе("Норма прибыли: " т гале ос геиигп)т Сопяо1е.иг1Севапе("В течение" + уеагя т " дет")> лог(1 = О) х < уеагя; 1++) авоипс = авоипс + (авоипс * гасе ог гесигп)7 Сопяо1е.иг1иеЬ1пе( 70 Часть ).
Язык С№ "Будущая стоимость равна $" + ашочлс) Вот как выглядит результат выполнения этой программы: Первоначальные капиталовложения: $1000 Норма прибыли: 0.07 Б течение 10 лет БУдУщая стоимость равна $1967.151357289565322490000 Обратите внимание на то, что результат выполнения приведенной выше программы представлен с точностью до целого ряда десятичных разрядов, т.е. с явным избытком по сравнению с тем, что обычно требуется! Далее в этой главе будет показано, как подобный результат приводится к более подходящему виду. Символы В С№ символы представлены не 8-разрядным кодом, как во многих других языках программирования, например С-н-, а 16-разрядным кодом, который называется уникодом ())п)сок)е).
В уникоде набор символов представлен настолько широко, что он охватывает символы практически из всех естественных языков на свете. Если для многих естественных языков, в том числе английского, французского и немецкого, характерны относительно небольшие алфавиты, то в ряде других языков, например китайском, употребляются довольно обширные наборы символов, которые нельзя представить 8-разрядным кодом. Для преодоления этого ограничения в С№ определен тип с)тат, представляющий 16-разрядные значения без знака в пределах от О до 65 535. При этом стандартный набор символов в 8-разрядном коде А5СП является подмножеством уникода в пределах от О до 127. Следовательно, символы в коде А5СП по-прежнему остаются действительными в С№.
Для того чтобы присвоить значение символьной переменной, достаточно заключить это значение (т.е, символ) в одинарные кавычки. Так, в приведенном ниже фрагменте кода переменной с)т присваивается символ Х. снаг с)м сь = 'Х'; Значение типа с)тат можно вывести на экран с помощью метода иг1сеь1пе(). Например, в следующей строке кода на экран выводится значение переменной с)т: солао1е.нг1сеьзле("значение сь равно: " + сп) Несмотря на то что тип спад определен в С№ как целочисленный, его не следует путать со всеми остальными целочисленными типами.
Дело в том, что в С№ отсутствует автоматическое преобразование символьных значений в целочисленные и обратно. Например, следующий фрагмент кода содержит ошибку: сьаг сът с)т 887 // ошибка, не выйдет Ошибочность приведенного выше фрагмента кода объясняется тем, что 88 — это целое значение, которое не преобразуется автоматически в символьное. При попытке скомпилировать данный фрагмент кода будет выдано соответствующее сообщение об ошибке. Для того чтобы операция присваивания целого значения символьной переменной оказалась допустимой, необходимо осуществить приведение типа, о котором речь пойдет далее в этой главе. Глава 3.
Типы данных, литералы и переменные 71 Логический тип данных Тип Ьоо1 представляет два логических значения: "истина" и "ложь". Эти логические значения обозначаются в С() зарезервированными словами Слое и та1зе соответственно. Следовательно, переменная или выражение типа Ьоо1 будет принимать одно из этих логических значений.
Кроме того, в С() не определено взаимное преобразование логичеасих и целых значений. Например, 1 не преобразуется в значение сгое, а Π— в значение Ка1зе. В приведенном ниже примере программы демонстрируется применение типа Ьоо1. // Продемонстрировать применение типа Ьоо1.