C# Math中常用数学运算的示例详解

 更新时间:2022年11月28日 08:20:29   作者:橙子家  
Math 为通用数学函数、对数函数、三角函数等提供常数和静态方法,使用起来非常方便。这篇文章主要为大家介绍几个常用的数学运算的使用,需要的可以参考一下

零、动态库 System.Math.dll

引入动态库 using System.Math;

Math 为通用数学函数、对数函数、三角函数等提供常数和静态方法,使用起来非常方便,下边简单列一下常用的几种。

一、舍弃小数位处理

1. 四舍五入 Math.Round()

Math.Round(74.5, MidpointRounding.AwayFromZero) = 75; // 保留到个位
Math.Round(-74.5, MidpointRounding.AwayFromZero) = -75; // 目标值为负数时,四舍五入和正整数相同

单纯使用 Math.Round(4.5) 得出的值为 4,因为 Round 默认是采用 Banker's rounding(银行家算法),即:四舍六入五取偶。事实上这也是 IEEE 的规范,因此所有符合 IEEE 标准的语言都应该采用这样的算法。

所谓取偶,就是看上一位:如果是偶数,小数位为 5 就舍弃;若为奇数,小数位为 5 就进 1。因此,若写法:Math.Round(74.5)=74;

Math.Round(7.015, 2, MidpointRounding.AwayFromZero) = 7.02; // 保留多位小数
Math.Round(-7.015, 2, MidpointRounding.AwayFromZero) = -7.02;

若需要保留多位小数,也是同样需要带枚举类型。

// Round 共有八个重载,输出类型由输入类型确定
Round(Decimal)
Round(Double)
Round(Decimal, Int32)
Round(Decimal, MidpointRounding)
Round(Double, Int32)
Round(Double, MidpointRounding)
Round(Decimal, Int32, MidpointRounding)
Round(Double, Int32, MidpointRounding)

关于 MidpointRounding 官网链接。

2. 进一法 Math.ceil() 和舍弃法 Math.Floor()

double[] values = { 7.03, 7.64, 0.12, -0.12, -7.1, -7.6 };
Console.WriteLine("  输入值          Ceiling 结果     Floor 结果\n");
foreach (double value in values)
    Console.WriteLine("{0,7} {1,16} {2,14}", value, Math.Ceiling(value), Math.Floor(value));
//  输入值          Ceiling 结果     Floor 结果
//   7.03                8              7
//   7.64                8              7
//   0.12                1              0
//  -0.12               -0             -1
//   -7.1               -7             -8
//   -7.6               -7             -8

二、取随机数 Random()

在新版的 C# 中,Random 类包含在命名空间 System 中,因此基本上随时随地都可以直接实例化并取用,十分方便。

下面用实例简单介绍下几个重载的用法,更加详细的用法推荐 Random 官方文档 。

Random random = new Random();
// Random.Next() // 返回非负int型随机数
int randomvalue = random.Next(); // 0 <= 返回值 <2,147,483,647 的整数
// Random.Next(Int) // 返回一个小于所指定最大值的非负随机整数
int randomvalue1 = random.Next(10); // 0 <= 返回值 < 10 的整数
// Random.Next(Int,Int) // 返回一个指定范围内的随机整数数,例如(-100,0)返回负数
int randomvalue2 = random.Next(10,20); // 10 <= 返回值 < 20 的整数
int randomvalue2 = random.Next(-10,0); // -10 <= 返回值 < 0 的整数
// Random.NextDouble()  // 返回一个介于 0 到 1 之间的随机数 0.70865696329095262
double randomvalue2 = random.NextDouble(); // 例如:0.70865696329095262、0.021905906508632892

三、绝对值 Math.Abs()

求绝对值的方法,只有仅一个参数的重载,即入参不同,但出参和入参类型相同,很简单不再赘述。Math.Abs() 官方文档

decimal[] decimals = { Decimal.MaxValue, 12.45M, 0M, -19.69M,
                      Decimal.MinValue };
foreach (decimal value in decimals)
    Console.WriteLine($"Abs({value}) = {Math.Abs(value)}");
//Abs(79228162514264337593543950335) = 79228162514264337593543950335
//Abs(12.45) = 12.45
//Abs(0) = 0
//Abs(-19.69) = 19.69
//Abs(-79228162514264337593543950335) = 79228162514264337593543950335

四、取较大值 Math.max() 与取最小值 Math.min()

较常用的写法就是比较两个数字的大小。它们还支持比较多种类型,详见 Math.Max() 官网 。

Math.Max(0,1) = 1;
Math.Min(0,1) = 0;

五、幂次方 Math.Pow() 与求平方根 Math.sqrt()

简单示例如下:

Math.Pow(2, 3) = 8; // 2 的 3 次方
Math.Sqrt(16) = 4; // 16 的平方根为 4,即 4*4 = 16

到此这篇关于C# Math中常用数学运算的示例详解的文章就介绍到这了,更多相关C# Math常用数学运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#验证码识别类完整实例

    C#验证码识别类完整实例

    这篇文章主要介绍了C#验证码识别类,以一个完整实例形式较为详细的分析了验证码图片处理所涉及的各种常用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C#图片按比例缩放的实现代码

    C#图片按比例缩放的实现代码

    这篇文章主要介绍了C#图片按比例缩放的实现代码,有需要的朋友可以参考一下
    2014-01-01
  • 基于C#制作一个飞机大战小游戏的全过程

    基于C#制作一个飞机大战小游戏的全过程

    飞机大战小游戏详细大家都不陌生,下面这篇文章主要给大家介绍了关于基于C#制作一个飞机大战小游戏的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • C#中Convert.ToInt32()和int.Parse()的区别介绍

    C#中Convert.ToInt32()和int.Parse()的区别介绍

    Convert是一个类,继承自system.Object;int是值类型,在本文为大家详细介绍下它与int.Parse()的区别,感兴趣的朋友可以参考下
    2013-10-10
  • C#调用windows api关机(关机api)示例代码分享

    C#调用windows api关机(关机api)示例代码分享

    本文主要介绍了C#调用windows api关机的示例代码,大家参考使用吧
    2014-01-01
  • C#留言时间格式化

    C#留言时间格式化

    本文给大家分享的是仿微博或者空间中,发布内容之后提示NN秒之前留言的代码,主要是通过发布时间和当前时间直接的差值来计算,十分的简单实用,有需要的小伙伴可以参考下。
    2015-05-05
  • C#动态webservice调用接口

    C#动态webservice调用接口

    动态调用webservice,就可以不用添加web引用了,上线的话也只是需要改一下wsdl地址就可以了
    2015-05-05
  • c#继承与多态使用示例

    c#继承与多态使用示例

    继承是面向对象程序设计的主要特征之一,允许重用现有类去创建新类的过程。下面使用示例学习一下c#继承与多态
    2014-01-01
  • c# 接口使用实例

    c# 接口使用实例

    这篇文章主要介绍了c#接口使用的实例,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#使用RegNotifyChangeKeyValue监听注册表更改的方法小结

    C#使用RegNotifyChangeKeyValue监听注册表更改的方法小结

    RegNotifyChangeKeyValue的最后一个参数传递false,表示以同步的方式监听,这篇文章主要介绍了C#使用RegNotifyChangeKeyValue监听注册表更改的方法小结,需要的朋友可以参考下
    2024-06-06

最新评论