一、Math类核心说明

Math类是C#中用于提供数学相关操作的静态类,其内部所有函数均为static静态函数

使用规则:静态函数无需实例化对象,直接通过 Math.函数名(参数) 的方式调用。

二、Math类常用函数详解(按功能分类)

1. 绝对值函数:Math.Abs()

功能:求一个数的绝对值(正数、0的绝对值是自身,负数的绝对值是其相反数)。

// 语法:Math.Abs(数值)
Console.WriteLine(Math.Abs(-10)); // 输出:10(负数的绝对值)
Console.WriteLine(Math.Abs(5));   // 输出:5(正数的绝对值)
Console.WriteLine(Math.Abs(0));   // 输出:0(0的绝对值)

2. 取整函数(向下/向上)

(1)向下取整:Math.Floor()

功能:将小数向下取整(无论小数部分多大,都舍去,取比它小的最大整数)。

// 语法:Math.Floor(小数)
Console.WriteLine(Math.Floor(2.3)); // 输出:2(舍去小数部分,取2)
Console.WriteLine(Math.Floor(2.7)); // 输出:2(即使小数部分是0.7,仍向下取2)
Console.WriteLine(Math.Floor(-2.3));// 输出:-3(向下取整,比-2.3小的最大整数是-3)
(2)向上取整:Math.Ceiling()

功能:将小数向上取整(无论小数部分多小,都进1,取比它大的最小整数)。

// 语法:Math.Ceiling(小数)
Console.WriteLine(Math.Ceiling(2.3));// 输出:3(小数部分0.3,向上进1为3)
Console.WriteLine(Math.Ceiling(2.9));// 输出:3(小数部分0.9,向上进1为3)
Console.WriteLine(Math.Ceiling(-2.3));// 输出:-2(向上取整,比-2.3大的最小整数是-2)

3. 四舍五入函数:Math.Round()

功能:对数值进行舍入操作,默认规则是四舍六入五取偶数(非我们日常的“四舍五入”),可通过参数修改舍入规则。

(1)默认规则:四舍六入五取偶数

核心:当小数部分为0.5(中间值)时,舍入到最近的偶数;其他情况按“四舍六入”处理。

// 语法1:Math.Round(数值)(默认保留整数)
Console.WriteLine(Math.Round(3.5));  // 输出:4(3.5的中间值,最近偶数是4)
Console.WriteLine(Math.Round(2.5));  // 输出:2(2.5的中间值,最近偶数是2)

// 语法2:Math.Round(数值, 保留小数位数)
Console.WriteLine(Math.Round(1.235, 2));// 输出:1.24(非中间值,四舍六入)
// 注意:1.225精度问题,默认double类型精度不足,导致舍入异常
Console.WriteLine(Math.Round(1.225m, 2));// 输出:1.22(改为decimal类型1.225m,遵循五取偶数)
(2)修改规则:正常四舍五入

通过添加第三个参数 MidpointRounding.AwayFromZero,实现日常的“四舍五入”(中间值0.5时,向远离0的方向舍入)。

// 语法:Math.Round(数值, 保留小数位数, 舍入规则)
// 规则说明:MidpointRounding.AwayFromZero = 正常四舍五入;MidpointRounding.ToEven = 默认五取偶数
Console.WriteLine(Math.Round(2.5, MidpointRounding.AwayFromZero));// 输出:3(正常四舍五入)
Console.WriteLine(Math.Round(1.225, 2, MidpointRounding.AwayFromZero));// 输出:1.23(正常四舍五入)

4. 圆周率属性:Math.PI

功能:Math类的静态属性,返回圆周率π的近似值(约3.141592653589793)。

// 语法:Math.PI(无参数,直接调用属性)
Console.WriteLine(Math.PI); // 输出:3.141592653589793

5. 幂运算函数:Math.Pow()

功能:计算第一个参数的第二个参数次幂(即“底数^指数”)。

// 语法:Math.Pow(底数, 指数)
Console.WriteLine(Math.Pow(2, 3));  // 输出:8(2的3次方,2×2×2)
Console.WriteLine(Math.Pow(3, 2));  // 输出:9(3的2次方,3×3)
Console.WriteLine(Math.Pow(10, 0)); // 输出:1(任何数的0次方都是1)

6. 开方函数:Math.Sqrt()

功能:计算一个非负数的平方根(仅支持非负数,负数会返回NaN)。

// 语法:Math.Sqrt(非负数)
Console.WriteLine(Math.Sqrt(9));  // 输出:3(3的平方是9)
Console.WriteLine(Math.Sqrt(16)); // 输出:4(4的平方是16)
Console.WriteLine(Math.Sqrt(0));  // 输出:0(0的平方根是0)
// Console.WriteLine(Math.Sqrt(-4)); // 输出:NaN(负数无实数平方根)

7. 最值函数(最大值/最小值)

(1)求最大值:Math.Max()

功能:返回两个参数中的较大值。

// 语法:Math.Max(参数1, 参数2)
Console.WriteLine(Math.Max(3, 2));  // 输出:3
Console.WriteLine(Math.Max(-5, 0)); // 输出:0
(2)求最小值:Math.Min()

功能:返回两个参数中的较小值。

// 语法:Math.Min(参数1, 参数2)
Console.WriteLine(Math.Min(3, 2));  // 输出:2
Console.WriteLine(Math.Min(-5, 0)); // 输出:-5

8. 三角函数(正弦/余弦)

注意:Math类的三角函数参数是弧度,而非角度,需先将角度转换为弧度(弧度 = 角度 × π / 180)。

(1)正弦函数:Math.Sin()

功能:计算指定弧度的正弦值。

// 示例:计算30度的正弦值(30度 = Math.PI / 6 弧度)
// 30度的正弦值为0.5
Console.WriteLine(Math.Sin(Math.PI / 6)); // 输出:0.5

功能:计算指定弧度的余弦值。

// 示例:计算60度的余弦值(60度 = Math.PI / 3 弧度)
// 60度的余弦值为0.5
Console.WriteLine(Math.Cos(Math.PI / 3)); // 输出:0.5

三、易错点提醒(高频踩坑)

  • 忘记Math类函数是静态函数,误尝试实例化Math对象后调用函数(错误:new Math().Abs(-10);正确:Math.Abs(-10));

  • Math.Round()默认是“四舍六入五取偶数”,而非日常四舍五入,需修改舍入规则时,必须添加第三个参数;

  • 使用Math.Round()保留小数时,double类型精度不足(如1.225),导致舍入异常,需改为decimal类型(加m后缀,如1.225m);

  • Math.Sqrt()传入负数,会返回NaN(非数字),需确保参数为非负数;

  • 三角函数(Sin/Cos)的参数是弧度,而非角度,直接传入角度会导致计算结果错误(需先转换为弧度)。

四、核心总结

  • Math类是静态类,所有函数需通过 Math.函数名() 调用,无需实例化;

  • 常用函数按功能分类:绝对值、取整、四舍五入、幂运算、开方、最值、三角函数、圆周率;

  • 重点注意Math.Round()的默认舍入规则、三角函数的参数是弧度、开方函数的参数非负

  • 精度问题:涉及小数舍入时,可使用decimal类型(加m后缀)提升精度,避免异常

更多推荐