首页 > 编程语言 >C# Math 中的常用的数学运算

C# Math 中的常用的数学运算

时间:2022-11-27 22:47:13浏览次数:64  
标签:MidpointRounding 运算 C# Random value Abs Round 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

 其他功能详见官方文档:Math

注:简单总结,欢迎补充和指正。

 

标签:MidpointRounding,运算,C#,Random,value,Abs,Round,Math
From: https://www.cnblogs.com/czzj/p/16892863.html

相关文章

  • D - Freefall -- ATCODER
    D-Freefallhttps://atcoder.jp/contests/abc279/tasks/abc279_d思路求凹函数的极小值  https://www.cnblogs.com/luoyj/p/12408277.html#6#include<bits/stdc+......
  • Centos7下redis5安装、部署、开机自启
    不知道为何,使用centos7安装redis4.0以上版本的yum源一直找不到,官网也没有,具体原因没有去调查,所以这里使用源码安装做个记录 1.由于Redis是用C语言编写,所以编译......
  • ParallelGC调优参数细讲
    最近项目一直在跑性能测试,看到程序的MinorGC频率增高,每分钟GC时间增大,心里总是会忐忑,待会儿不会又有503吧。前言对于Java程序员来说,GC总是绕不过去的一个知识点,总有那么......
  • 拓端数据tecdat|Python代写LDA主题模型算法应用
    在这篇文章中,我将介绍用于LatentDirichletAllocation(LDA)的ldaPython包的安装和基本用法。我不会在这篇文章中介绍该方法的理论基础。然而,这个模型的主要参考,Bleietal2......
  • 拓端数据tecdat|R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
     正则化(regularization)正则化路径是在正则化参数lambda的值网格上计算套索LASSO或弹性网路惩罚的正则化路径。该算法速度快,可以利用输入矩阵x中的稀疏性,拟合线性、logist......
  • 拓端tecdat|R语言编程代写最优聚类数目k改进kmean聚类算法
    R语言最优聚类数目k改进kmean聚类算法 在本文中,我们将探讨应用聚类算法(例如k均值和期望最大化)来确定集群的最佳数量时所遇到的问题之一。从数据集......
  • Centos7 yum 安装mysql8.0
    1.去mysql官网下载yum存储库包https://dev.mysql.com/downloads/repo/yum/  这里本人很早之前就下载过,就不重复下载了 2.安装mysqlyum......
  • LeetCode刷题记录.Day27
    逆波兰表达式求值classSolution{public:intevalRPN(vector<string>&tokens){stack<longlong>st;for(inti=0;i<tokens.size();i++){......
  • MAC 解决 vscode vim按键冲突问题
    问题描述在MAC中使用vscode+vim会遇到使用ljk等按键移动光标时候触发其他功能的问题,问题的根源在于mac的按键重复解决办法解决的办法就是为vscode禁用按键重复,在命令......
  • Spring Security(6)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ Spring Security使用MySQL保存cookie记录虽然方便,但是目前更多的主流互联网应用都是用NoSQL来保存非业务数据的,Spring......