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 ...
随机推荐
- TDengine概述以及架构模型
TDengine TDengine是一个高效的存储.查询.分析时序大数据的平台,专为物联网.车联网.工业互联网.运维监测等优化而设计. 您可以像使用关系型数据库MySQL一样来使用它. TDengin ...
- Windows Server体验之管理
安装了只有命令行界面的Windows Server之后怎么去管理,对于传统的Windows管理员来说确实是比较棘手的.因为没有了图形化的管理界面,需要更多的去依赖Powershell或者cmd命令去做 ...
- stm32fxx_hal_i2c.c解读之HAL_I2C_Mem_Write
HAL_I2C_Mem_Write()函数位于stm32fxx_hal_i2c.c文件的2432行,源代码对该函数的解释如下图 HAL_StatusTypeDef HAL_I2C_Mem_Write( ...
- Dockerfile文件:设置变量启动的时候传递进去
from openjdk:8-jdk-alpine RUN ln -sf /usr/share/zoneinfo/Asia/shanghai /etc/localtime RUN echo 'Asia ...
- 第三章:模版层 - 2:Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- 5N的多次方
N=eval(input(" 请输入一个数:")) for i in range (5): print(pow(N,i))
- Linux下多线程创建
1.pthread_create Linux中线程创建用pthread_create函数 #include <pthread.h> int pthread_create( pthread_ ...
- 洛谷P1496 火烧赤壁 (模拟/离散化+差分)
分析可知:将起点和终点按照从小到大的顺序排序,对答案不会产生影响 所以此时我们得到一种模拟做法: 1 #include<bits/stdc++.h> 2 using namespace s ...
- GitLab + Jenkins + Harbor 工具链快速落地指南
目录 一.今天想干啥? 二.今天干点啥? 三.今天怎么干? 3.1.常规打法 3.2.不走寻常路 四.开干吧! 4.1.工具链部署 4.2.网络配置 4.3.验证工具链部署结果 4.3.1.GitLa ...
- AlexNet-文献阅读笔记
论文介绍 ImageNet Classification with Deep Convolutional Neural Networks- Alex Krizhevsky, Ilya Sutskeve ...