C#的Math 类使用说明

一: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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值