C# Math和Mathf的使用(小数取整、四舍五入、取绝对值等)

本文介绍了C#中的Math类和Unity中的Mathf结构体,用于数学计算。Mathf是Unity对Math的扩展,包含更多游戏开发相关方法。Math提供了向上取整(Math.Ceiling)、向下取整(Math.Floor)和四舍五入(Math.Round)功能。Unity的Mathf包括钳制方法 Mathf.Clamp、Mathf.Clamp01 和插值方法 Mathf.Lerp。

在C#中我们做一些数学计算时,常会见到Math和Mathf的使用。到底使用哪个,它们有什么区别?

首先了解下它们的定义:

Math:是C#中封装好的用于数学计算的一个工具类,命名空间是System;

Mathf:是Unity中封装好的用于数学计算的一个工具结构体,命名空间是UnityEngine。

事实上,Mathf是Unity基于Math专门封装的一个机构提,它包含了Math中的所有方法,又增加了一些适合Unity自身游戏开发的一些方法。

主要了解下Math的一些常用方法:

一、小数取整有向上取整和向下取整:

1、向上取整方法:Math.Ceiling()

例:Math.Ceiling(1)=1

Math.Ceiling(1.3)=2

Math.Ceiling(1.5)=2

2、向下取整方法:Math.Floor()

例:Math.Floor(1)=1

Math.Floor(1.3)=1

Math.Floor(1.5)=1

二、四舍五入

四舍五入使用的方法是:Math.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)

Math.Round()具有多重方法,常规使用的方法它实际上四舍六入五取偶,即当碰到.5时,前面是偶数就取前面偶数。

例:

Math.Round(0.5)=0

Math.Round(1.5)=2

Math.Round(2.5)=2

Math.Round(3.5)=4

想要实现中国式的四舍五入:

就需要使用后面的方法Round(Decimal, MidpointRounding)的MidpointRounding.AwayFromZero模式:

当小数四舍五入取整时,该方法可正常实现:如:Math.Round(0.5,MidpointRounding.AwayFromZero)=1

但是如果要计算小数,就需要使用Math.Round(Decimal, Int32, MidpointRounding)重载方法。

例:

Math.Round(16.216, 2)=16.22

Math.Round(16.216, 2, MidpointRounding.AwayFromZero)=16.22

Math.Round((decimal)16.216, 2)=16.22

Math.Round((decimal)16.216, 2, MidpointRounding.AwayFromZero)=16.23

三:Math常用属性

Math.E≈2.718(欧拉数);Math.PI≈3.14

四:返回绝对值:Abs(x)

Unity中Mathf的一些常用方法:

1、钳制方法:Mathf.Clamp(),第一个数和后面两数比较,比最小一个还小返回后面最小值,比最大还大返回后面最大数,否则返回本身。

2、Mathf.Clamp01(),钳制值在0-1之间。

3、插值Mathf.Lerp()

Mathf.Learp(from : float, to :float, t : float) : float

基于浮点数t返回a到b之间的插值,t限制在0~1之间。

当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。

相当于值等于to*t

例:Mathf.Learp(0,100,0.0)=0

Mathf.Learp(0,100,0.1)=10

Mathf.Learp(0,100,0.5)=50

Mathf.Learp(0,100,1)=100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿游也

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值