C#的Math 类使用说明

C#的Math 类使用说明

  • 一:Math 类简单说明
  • 二:Math 类的字段
    • 1: Math 类的字段使用举例
  • 三:Math 类的常用方法
    • 1: Math.Abs() 方法的使用
    • 2: Math.Asin(Double) 方法的使用
    • 3: Math.Atan(Double) 方法的使用
    • 4: Math.Atan2(Double, Double) 方法的使用
    • 5: Math.BigMul(Int32, Int32) 方法的使用
    • 6: Math.Ceiling()和Math.Floor() 方法的使用
    • 7: Math.Exp(Double)和Math.Log () 方法的使用
    • 8: Math.Pow(Double, Double) 方法的使用
    • 9:Math.Round()方法的使用

一:Math 类简单说明

   为三角函数、对数函数和其他通用数学函数提供常数和静态方法。

二:Math 类的字段

字段 字段说明
E 表示自然对数的底,它由常数 e 指定。
PI 表示圆的周长与其直径的比值,由常数 π 指定。

1: Math 类的字段使用举例

double x = 2 * 180 / Math.PI;
double y =  Math.Round(x, 2);//Round(Double, Int32)

Console.WriteLine("{0} , {1}",x,y);

运行结果:

114.591559026165 , 114.59

三:Math 类的常用方法

方法 方法说明
Abs(Decimal) 返回 Decimal 数字的绝对值。
Acos(Double) 返回为指定数字的余弦值角度
Asin(Double) 返回为指定数字的正弦值角度
Atan(Double) 返回为指定数字的正切值角度
Atan2(Double, Double) 返回两个指定数字的商的正切值角度
BigMul(Int32, Int32) 生成两个 32 位数字的完整乘积,就是两个数相乘。
Ceiling(Decimal) 返回大于或等于指定的十进制数的最小整数值
Floor(Decimal) 返回小于或等于指定小数的最大整数值
Cos(Double) 返回指定角度的余弦值
Cosh(Double) 返回指定角度的双曲余弦值
Sin(Double) 返回指定角度的正弦值
Sinh(Double) 返回指定角度的双曲正弦值
DivRem(Int32, Int32, Int32) 计算两个 32 位有符号整数的商,并通过输出参数返回余数。
Exp(Double) 返回 e 的指定次幂。
Ceiling(Decimal) 返回大于或等于指定的十进制数的最小整数值。
IEEERemainder(Double, Double) 返回一指定数字被另一指定数字相除的余数。
Log(Double) 返回指定数字的自然对数(底为 e)。
Log(Double, Double) 返回指定数字在使用指定底时的对数。
Log10(Double) 返回指定数字以 10 为底的对数。
Max(Decimal, Decimal) 返回两个十进制数中较大的一个。
Min(Decimal, Decimal) 返回两个十进制数中较小的一个。
Pow(Double, Double) 返回指定数字的指定次幂。
Round(Decimal) 将双精度浮点值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数。
Round(Double, Int32) 将小数值舍入到最接近的整数值,并将中点值舍入到最接近的偶数。
Sign(Decimal) 返回表示十进制数符号的整数。
Sqrt(Double) 返回指定数字的平方根。
Tan(Double) 返回指定角度的正切值。

1: Math.Abs() 方法的使用

重载 重载说明
Abs(Decimal) 返回 Decimal 数字的绝对值。
Abs(Double) 返回双精度浮点数字的绝对值。
Abs(Single) 回单精度浮点数字的绝对值。
Abs(Int64) 返回 64 位有符号整数的绝对值。
Abs(Int32) 返回 32 位有符号整数的绝对值。
Abs(Int16) 返回 16 位有符号整数的绝对值。
Abs(SByte) 返回 8 位有符号整数的绝对值。

使用举例:

decimal[] decimals = { Decimal.MaxValue, 13.15M, -19.69M, Decimal.MinValue };
foreach (decimal value in decimals)
{
    //WriteLine($"{sth}");//这种情况下编译器会把sth当做一个表达式,计算出这个表达式的值,然后输出。
    Console.WriteLine($"Abs({value}) = {Math.Abs(value)}");
}
Console.WriteLine();

double[] doubles = { Double.MaxValue, 16.354e-17, 10.28, -15.058e18, Double.MinValue };
foreach (double value in doubles)
{
    Console.WriteLine($"Abs({value}) = {Math.Abs(value)}");
}
Console.WriteLine();

short[] values = { Int16.MaxValue, 15989, -929, Int16.MinValue };
foreach (short value in values)
{
    try
    {
        Console.WriteLine($"Abs({value}) = {Math.Abs(value)}");
    }
    catch (OverflowException)
    {
        Console.WriteLine("Unable to calculate the absolute value of {0}.",value);
    }
}

运行结果:

Abs(79228162514264337593543950335) = 79228162514264337593543950335
Abs(13.15) = 13.15
Abs(-19.69) = 19.69

Abs(-79228162514264337593543950335) = 79228162514264337593543950335
Abs(1.79769313486232E+308) = 1.79769313486232E+308
Abs(1.6354E-16) = 1.6354E-16
Abs(10.28) = 10.28
Abs(-1.5058E+19) = 1.5058E+19
Abs(-1.79769313486232E+308) = 1.79769313486232E+308

Abs(32767) = 32767
Abs(15989) = 15989
Abs(-929) = 929
Unable to calculate the absolute value of -32768.

2: Math.Asin(Double) 方法的使用

2.1:语法

public static double Asin (double d);

2.2:参数说明

d:表示一个正弦值的数字,d 必须大于或等于 -1 但小于或等于 1。
Double:返回角度 θ,以弧度为单位,满足 -π/2 ≤ θ ≤ π/2。 如果 d < -1 或 d > 1 或 d 等于 NaN,则为 NaN。

2.3:使用举例

double val1 = -0.0;
double val2 = 1.1;
double val3 = 0.9;
double val4 = Double.NaN;

Console.WriteLine("Return value of {0} : {1}", val1, Math.Asin(val1));
Console.WriteLine("Return value of {0} : {1}", val2, Math.Asin(val2));
Console.WriteLine("Return value of {0} : {1}", val3, Math.Asin(val3));
Console.WriteLine("Return value of {0} : {1}", val4, Math.Asin(val4));

2.4:运行结果:

Return value of 0 : 0
Return value of 1.1 : 非数字
Return value of 0.9 : 1.11976951499863
Return value of 非数字 : 非数字

3: Math.Atan(Double) 方法的使用

3.1:语法

public static double Atan (double d);

3.2:参数说明

d:表示正切值的数字。。
Double:返回角度 θ,以弧度为单位,满足 -π/2 ≤ θ ≤ π/2。

4: Math.Atan2(Double, Double) 方法的使用

4.1:语法

public static double Atan2 (double y, double x);

4.2:参数说明

x,y:点的 x和y 坐标。
Double:返回角度 θ,以弧度为单位,满足 -π ≤ θ ≤ π,且 tan(θ) = y / x,其中 (x, y) 是笛卡儿平面中的点。

4.3:使用举例

//  计算45度的切线。
angle = 45;
radians = angle * (Math.PI / 180);
result = Math.Tan(radians);
Console.WriteLine("计算45度的正切值是: {0}.", result);

// 计算上一个切线的反正切.
radians = Math.Atan(result);
angle = radians * (180 / Math.PI);
Console.WriteLine("上一个切线的反正切角度是:{0}", angle);

radians = Math.Atan2(y, x);
angle = radians * (180 / Math.PI);

Console.WriteLine(radians);
Console.WriteLine(angle);

4.4:运行结果:

计算45度的正切值是: 1.
上一个切线的反正切角度是:45
0.785398163397448
45

5: Math.BigMul(Int32, Int32) 方法的使用

5.1:语法

public static long BigMul (int a, int b);

5.2:使用举例

int int1 = 99;
int int2 = 100;
long longResult;

longResult = Math.BigMul(int1, int2);
Console.WriteLine("{0} * {1} = {2}", int1, int2, longResult);

5.3:运行结果:

99 * 100 = 9900

6: Math.Ceiling()和Math.Floor() 方法的使用

6.1:语法

public static decimal Ceiling (decimal d); //这种舍入有时称为,向正无穷大舍入。
public static decimal Floor (decimal d);//这种舍入有时称为,向负无穷大舍入

6.2:重载

重载 重载说明
Ceiling(Decimal) 返回大于或等于指定的十进制数的最小整数值。
Ceiling(Double) 返回大于或等于指定的双精度浮点数的最小整数值。
Floor(Double) 返回小于或等于指定双精度浮点数的最大整数值。
Floor(Decimal) 返回小于或等于指定小数的最大整数值。

6.3:使用举例

decimal[] values = { 9.29m, 10.28m, 89.79m, -21.29m, -7.1m, -7.6m };
Console.WriteLine("  Value          Ceiling          Floor\n");

foreach (decimal value in values)
{
    Console.WriteLine("{0,7} {1,16} {2,14}", value, Math.Ceiling(value), Math.Floor(value));
}

6.4:运行结果:

Value   Ceiling   Floor
9.29    10    9
10.28    11  10
89.79   90   89
-21.29   -21   -22
-7.1    -7    -8
-7.6    -7    -8

7: Math.Exp(Double)和Math.Log () 方法的使用

7.1:语法

public static double Exp (double d);
public static double Log (double d);

7.2:重载

重载 重载说明
Log(Double, Double) 返回指定数字在使用指定底时的对数。
Log(Double) 返回指定数字的自然对数(底为 e)。

7.3:使用举例

int a = 2;
double b = Math.Exp(a);
double c = Math.Log(b);

Console.WriteLine( "Math.Exp = {0},Math.Log = {1}",b,c);

7.4:运行结果:

Math.Exp = 7.38905609893065,Math.Log = 2

8: Math.Pow(Double, Double) 方法的使用

8.1:语法

public static double Pow (double x, double y);

8.2:使用举例

int a = 2;
int b = 3;
double c = Math.Pow(a,b);

Console.WriteLine("Math.Pow(a,b) = {0}", c);

8.3:运行结果:

Math.Pow(a,b) = 8

9:Math.Round()方法的使用

9.1:重载

重载 重载说明
Round(Double, Int32, MidpointRounding) 使用指定的舍入约定将双精度浮点值,舍入为指定的小数位数。
Round(Decimal, Int32, MidpointRounding) 使用指定的舍入约定将十进制值,舍入为指定的小数位数。
Round(Double, MidpointRounding) 使用指定的舍入约定将双精度浮点值,舍入为整数。
Round(Decimal, MidpointRounding) 使用指定的舍入约定将十进制值,舍入为整数。
Round(Double, Int32) 将双精度浮点值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数。
Round(Decimal, Int32) 将小数值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数。
Round(Double) 将双精度浮点值舍入到最接近的整数值,并将中点值舍入到最接近的偶数。
Round(Decimal) 将小数值舍入到最接近的整数值,并将中点值舍入到最接近的偶数。

9.2:中点值和舍入约定
  舍入涉及到将具有指定精度的数值,转换为精度较低的值。 例如,可以使用 Round(Double) 方法将3.4 的值舍入到3.0,并使用 Round(Double, Int32) 方法将3.579 值舍入到3.58。

  Round方法支持两个用于处理中点值的舍入约定:
1)远离零的舍入:中值舍入到下一个数字,而不是零。 例如,3.75 舍入为3.8,3.85 舍入到3.9,-3.75 舍入到-3.8,-3.85 舍入到-3.9。 这种形式的舍入由 MidpointRounding.AwayFromZero 枚举成员表示。
2)舍入到最接近的偶数或按下舍入:中值舍入为最接近的偶数。 例如,3.75 和3.85 舍入为3.8,-3.75 和-3.85 舍入到-3.8。 这种形式的舍入由 MidpointRounding.ToEven 枚举成员表示。

9.3:使用举例

decimal[] values = { 1.15m, 1.25m, 1.35m, 1.45m, 1.55m, 1.65m };
decimal sum = 0;

// 计算真实平均值.
foreach (var value in values)
    sum += value;
Console.WriteLine("真实平均值:     {0:N2}", sum / values.Length);

// 用四舍五入的方式计算平均值.
sum = 0;
foreach (var value in values)
{
    sum += Math.Round(value, 1, MidpointRounding.AwayFromZero);//Round(Decimal, Int32, MidpointRounding) 
}
    
Console.WriteLine("AwayFromZero:  {0:N2}", sum / values.Length);

//  四舍五入为最接近的偶数的计算平均值.
sum = 0;
foreach (var value in values)
{
    sum += Math.Round(value, 1, MidpointRounding.ToEven);
}
    
Console.WriteLine("ToEven:        {0:N2}", sum / values.Length);

9.4:运行结果:

真实平均值:  1.40
AwayFromZero:  1.45
ToEven:   1.40

你可能感兴趣的:(C#编程指南,c#,开发语言)