C# 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)
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
注:简单总结,欢迎补充和指正。
C# Math 中的常用的数学运算的更多相关文章
- Java中math类的常用函数
Java中math类的常用函数 在 Java 中 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数.对数.平方根和三角函数等 只要在源文件的顶部加上下面这行代码就不必在数学方法名和常量名 ...
- 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...
- JAVA之Math类常用数学运算记录
Math中定义了许多的方法,且这些方法均为static类型,通过Math类就能直接调用. 调用形式:Math.方法名 例如,我要进行e运算,那么我直接调用Math.exp(double 类型 数值); ...
- Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)
平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...
- JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算
JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习 ...
- 常用API(包装类、System、Math、Arrays、大数据运算)
常用API 今日内容介绍 u 基本类型包装类 u System u Math u Arrays u BigInteger u BigDecimal 第1章 基本类型包装类 大家回想下,在第二天我们学习 ...
- 开源Math.NET基础数学类库使用(07)一些常用的数学物理常数
原文:[原创]开源Math.NET基础数学类库使用(07)一些常用的数学物理常数 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/ ...
- 机器学习---笔记----numpy和math包中的常用函数
本文只是简单罗列一下再机器学习过程中遇到的常用的数学函数. 1. math.fabs(x): 返回x的绝对值.同numpy. >>> import numpy >>> ...
- iOS开发中常用的数学函数
iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...
- shell中的字符串操作和数学运算
字符串操作 变量赋值: 说明:变量值可以用单引号.双引号.或者不加任何引号来赋值给变量 变量名="变量值" 变量名='变量值' 变量名=变量值 例如:str="hel ...
随机推荐
- 微信小程序-前后端交互
前台手机验证码登录 <view>手机号:</view> <input value="{{phone}}" bindinput="bindPh ...
- nexus迁移
1.找到nexus主目录和sonatype-work目录打包,一般在 /usr/local/nexus 和 /usr/local/sonatype-work # tar -czvf nexus.tar ...
- aardio + VBScript 混合开发
aardio 与 VBScript 可以直接混合编程,VBScript 属于 Windows 系统自带组件 -- 可以方便地生成独立 EXE 程序. 快速入门 首先创建 VBScript 解释器,aa ...
- .NET下数据库的负载均衡(有趣实验)(续)
.NET下数据库的负载均衡(有趣实验)这篇文章发表后,受到了众多读者的关注与好评,其中不乏元老级程序员. 读者来信中询问最多的一个问题是:它是否能支持"异种数据库"的负载均衡?? ...
- spring boot集成redis基础入门
redis 支持持久化数据,不仅支持key-value类型的数据,还拥有list,set,zset,hash等数据结构的存储. 可以进行master-slave模式的数据备份 更多redis相关文档请 ...
- HDU1114 Piggy-Bank (完全背包)
完全背包模板,和01背包相比不用倒推,因为一种可以选多个. 这道题求最小,dp数组初始化为无穷即可. 1 #include<iostream> 2 #include<cstring& ...
- Go的网络编程详解
一 互联网协议介绍 1.1互联网分层模型 互联网的逻辑实现被分为好几层.每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持.用户接触到的只是最上面的那一层,根本不会感觉到下面的几层.要理解互联 ...
- Tableau Server 常用命令
Tableau Server 常用命令 1> 停止tableau server服务 tabadmin stop 2> 恢复tableau server数据 tabadmin restore ...
- Java中的反射与代理(2)
在经典的GoF设计模式中,有一种模式叫做代理模式,好比以前洋务运动的时候所说的「买办」,还有现在咱们经常听到的「代理人」战争中的「代理」,都是同一个意思--代替某人打理. 例如,很多北漂都找中介或者二 ...
- JavaWeb完整案例详细步骤
JavaWeb完整案例详细步骤 废话少说,展示完整案例 代码的业务逻辑图 主要实现功能 基本的CURD.分页查询.条件查询.批量删除 所使用的技术 前端:Vue+Ajax+Elememt-ui 后端: ...