为三角函数、对数函数和其他通用数学函数提供常数和静态方法。
字段 | 字段说明 |
---|---|
E | 表示自然对数的底,它由常数 e 指定。 |
PI | 表示圆的周长与其直径的比值,由常数 π 指定。 |
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 |
方法 | 方法说明 |
---|---|
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) | 返回指定角度的正切值。 |
重载 | 重载说明 |
---|---|
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.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.1:语法
public static double Atan (double d);
3.2:参数说明
d:表示正切值的数字。。 Double:返回角度 θ,以弧度为单位,满足 -π/2 ≤ θ ≤ π/2。 |
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.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.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.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.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.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 |