Полное руководство. С# 4.0 - Шилдт Герберт
Шрифт:
Интервал:
Закладка:
В приведенном ниже примере программы метод Sqrt() служит для расчета гипотенузы по длине противоположных сторон прямоугольного треугольника согласнотеореме Пифагора.// Расчет гипотенузы по теореме Пифагора.using System;class Pythagorean { static void Main() { double s1; double s2; double hypot; string str; Console.WriteLine("Введите длину первой стороны треугольника: "); str = Console.ReadLine(); s1 = Double.Parse(str); Console.WriteLine("Введите длину второй стороны треугольника: "); str = Console.ReadLine(); s2 = Double.Parse(str); hypot = Math.Sqrt(s1*s1 + s2*s2); Console.WriteLine("Длина гипотенузы равна " + hypot); }}
Ниже приведен один из возможных результатов выполнения этой программы.Введите длину первой стороны треугольника: 3Введите длину второй стороны треугольника: 4Длина гипотенузы равна: 5
Далее следует пример программы, в которой метод Pow() служит для расчета первоначальных капиталовложений, требующихся для получения предполагаемой будущей стоимости, исходя из годовой нормы прибыли и количества лет. Ниже приведенаформула для расчета первоначальных капиталовложений.первоначальные капиталовложения = будущая стоимость / (1 + норма прибыли)количество лет
В вызове метода Pow() необходимо указывать аргументы типа double, поэтомунорма прибыли и количество лет задаются в виде значений типа double. А первоначальные капиталовложения и будущая стоимость задаются в виде значений типаdecimal./* Рассчитать первоначальные капиталовложения, необходимые для получения заданной будущей стоимости, исходя из годовой нормы прибыли и количества лет. */using System;class InitialInvestment { static void Main() { decimal initInvest; // первоначальные капиталовложения decimal futVal; // будущая стоимость double numYears; // количество лет double intRate; // годовая норма прибыли string str; Console.Write("Введите будущую стоимость: "); str = Console.ReadLine(); try { futVal = Decimal.Parse(str); } catch(FormatException exc) { Console.WriteLine(exc.Message); return; } Console.Write("Введите норму прибыли (например, 0.085): "); str = Console.ReadLine(); try { intRate = Double.Parse(str); } catch(FormatException exc) { Console.WriteLine(exc.Message); return; } Console.Write("Введите количество лет: "); str = Console.ReadLine(); try { numYears = Double.Parse(str); } catch(FormatException exc) { Console.WriteLine(exc.Message); return; } initInvest = futVal / (decimal) Math.Pow(intRate+1.0, numYears); Console.WriteLine("Необходимые первоначальные капиталовложения: {0:C}", initInvest); }}
Ниже приведен один из возможных результатов выполнения этой программы.Введите будущую стоимость: 10000Введите норму прибыли (например, 0.085): 0.07Введите количество лет: 10Необходимые первоначальные капиталовложения: $5,083.49Структуры .NET, соответствующие встроенным типам значений
Структуры, соответствующие встроенным в C# типам значений, были представленыв главе 14, где они упоминались в связи с преобразованием строк, содержащих числовые значения в удобочитаемой форме, в эквивалентные двоичные значения. В этомразделе структуры .NET рассматриваются более подобно.
Имена структур .NET и соответствующие им ключевые слова, обозначающие типызначений в С#, перечислены в приведенной ниже таблице.Имя структуры в .NETИмя типа значения в C#System.BooleanboolSystem.CharcharSystem.DecimaldecimalSystem.DoubledoubleSystem.SinglefloatSystem.Int16shortSystem.Int32intSystem.Int64longSystem.UInt16ushortSystem.UInt32uintSystem.UInt64ulongSystem.BytebyteSystem.Sbytesbyte
Используя члены, определенные в этих структурах, можно выполнять операциинад значениями простых типов данных. Все перечисленные выше структуры рассматриваются далее по порядку.
ПРИМЕЧАНИЕНекоторые методы, определенные в структурах, соответствующих встроенным в C# типам значений, принимают параметры типа IFormatProvider или NumberStyles. ТипIFormatProvider вкратце описывается далее в этой главе, а тип NumberStyles представляет собой перечисление из пространства имен System.Globalization. Вопросыформатирования подробнее рассматриваются в главе 22.Структуры целочисленных типов данных
Ниже перечислены структуры целочисленных типов данных.ByteSByteInt16Uint16Int32UInt32Int64UInt64
Каждая из этих структур содержит одинаковое количество членов. В табл. 21.2 дляпримера перечислены члены структуры Int32. Аналогичные члены в виде методовимеются и у других структур, за исключением целочисленного типа, который онипредставляют.
Помимо перечисленных выше методов, в структурах целочисленных типов данныхопределены следующие поля типа const.MaxValueMinValue
В каждой структуре эти поля содержат наибольшее и наименьшее значения, допустимые для данных соответствующего целочисленного типа.
Во всех структурах целочисленных типов данных реализуются следующие интерфейсы: IComparable, IComparable<T>, IConvertible, IFormattableи IEquatable<T>, где параметр обобщенного типа Т заменяется соответствующимтипом данных. Например, в структуре Int32 вместо Т подставляется тип int.
Таблица 21.2. Методы, поддерживаемые структурой Int32МетодНазначениеpublic int CompareTo(object value)Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значениеpublic int CompareTo(int value)Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значениеpublic override bool Equals(object obj)Возвращает логическое значение true, если значение вызывающего объекта равно значению параметра objpublic bool Equals(int obj)Возвращает логическое значение true, если значение вызывающего объекта равно значению параметра objpublic override int GetHashCode()Возвращает хеш-код для вызывающего объектаpublic TypeCode GetTypeCode()Возвращает значение перечисления TypeCode для эквивалентного типа. Например, для структуры Int32 возвращается значение TypeCode.Int32public static int Parse(string s)Возвращает двоичный эквивалент числа, заданного в виде символьной строки s. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключениеpublic static int Parse(string s, IformatProvider provider)Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключениеpublic static int Parse(string s, NumberStyles styles)Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием данных о стилях, определяемых параметром styles. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключениеpublic static int Parse (string s, NumberStyles styles, IformatProvider provider)Возвращает двоичный эквивалент числа, заданного в виде строки символьной s, с использованием данных о стилях, определяемых параметром styles, а также форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключениеpublic override string ToString()Возвращает строковое представление значения вызывающего объектаpublic string ToString(string format)Возвращает строковое представление значения вызывающего объекта, как указано в форматирующей строке, определяемой параметром formatpublic string ToString(IformatProvider provider)Возвращает строковое представление значения вызывающего объекта с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром providerpublic string ToString(string format, IformatProvider provider)Возвращает строковое представление значения вызывающего объекта, как указано в форматирующей строке, определяемой параметром format, но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром providerpublic static bool TryParse(string s, out int result)Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в двоичное значение. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse(), который генерирует исключение при неудачном исходе преобразованияpublic static bool TryParse(string s, NumberStyles styles, IformatProvider provider, out int result)Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в двоичное значение с использованием информации о стилях, обозначаемых параметром styles, а также форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse(), который генерирует исключение при неудачном исходе преобразованияСтруктуры типов данных с плавающей точкой