Unity/C# 舍入的五种写法

本文详细介绍了在Unity/C#环境下数值计算中的五种舍入方法:就近舍入(包括远零舍入和近偶舍入)、定向舍入(向上、向下、向零)。内容涵盖舍入的定义、误差、C#的System.Math.Round和Unity.Mathf.Round的使用,以及各种舍入规则的比较和应用场景。特别指出,Unity中默认的舍入规则为近偶舍入,这可能导致与传统四舍五入的不同结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

舍入的五种写法

0. 简介

舍入是一个数学概念,一种修约规则。

在日常的生活中,我们为了精简格式,记忆方便,常常会使用四舍五入的方法来去掉零头或凑个整数来解决此类问题。

在游戏中开发中,舍入也是数值计算中重要的一环。只有使用正确的舍入规则,才能配合数值策划进行更合理的数值设计与计算,让玩家在尽量无感的情况下也能认同游戏数值的合理性。

然而在使用Unity进行开发时,我们却发现Unity中Range的结果与日常使用的四舍五入结果并不相同。

这是因为除了四舍五入的舍入方法外还有其他不同的舍入规则、在数学中也有其独特的定义。

本文将从Unity引擎使用的C#语言入手,讲解舍入的5种写法。

0.1 舍入定义

在对位数较多的数进行计算时,为了方便或由于受到计算工具的限制,需要用位数较少的数来代替(有时按照精确度的要求也不必对全部数字进行计算)。

于是,就要按一定的规则去掉一个数的某个有效数字以后的数字,并对剩余部分进行调整,使得尽可能接近于原来那个数。这种过程称为舍入。

0.2 舍入误差定义

舍入误差是指运算得到的近似值和精确值之间的差异。

比如当用有限位数的浮点数来表示实数的时候(理论上存在无限位数的浮点数)就会产生舍入误差。

舍入误差是量化误差的一种形式。

如果在一系列运算中的一步或者几步产生了舍入误差,在某些情况下,误差会随着运算次数增加而积累得很大,最终得出没有意义的运算结果。

舍入误差举例:

增加数字位数可以减少可能会产生的舍入误差,但是位数是有限的,在表示无限浮点数时仍然会产生误差。

在用常规方法表示浮点数的情况下,这种误差是不可避免的,但是可以通过设置警戒位来减小。

多步舍入会增加舍入误差,例如数字9.945309在输入时被舍入到小数点后两位 (9.95),显示时再舍入到小数点后一位(10.0),舍入误差是0.054691。如果原来的数只经过一步舍入到小数点后一位(9.9),舍入误差仅为0.045309。

1 就近舍入

舍入到最接近的,指定精度的原始数字。

对于正数:

  • 如果下一位数字从 0 到 4,则最接近的数字为负无穷大。

  • 如果下一位数字从 6 到 9,则最接近的数字是正无穷大。

对于负数:

  • 如果下一个数字从 0 到 4,则最接近的数字为正无穷大。

  • 如果下一位数字从 6 到 9,则最接近的数字为负无穷大。

那么真正有争议的数字就只有5了,所以就近舍入的两种舍入规则,就是针对对数字为5时制定的舍入规则。

1.1 远零舍入 Away From Zero

1.1.1 舍入规则

规则:当数字在两个数字之间的中间时,它将舍入到离零的最接近的数字。

远零舍入就是我们所熟悉的“四舍五入”

1.2 近偶舍入 To Even

1.2.1 舍入规则

规则:当数字在两个数字之间的中间时,它将舍入到最接近的偶数。

近偶舍入也叫做"银行家舍入",

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值