对小数的四舍五入算法

Description:

仅仅能对最多6位小数进行四舍五入,注意小数末尾自己主动去0不占位(比如:1.20f被看做:1.2f),当传入的小数为2.0f这种小数时视为整数返回0;

被解决的问题:

在Unity3d圣典中的四舍五入函数Mathf.Round返回浮点数 f 进行四舍五入最接近的整数。假设数字末尾是.5,因此它是在两个整数中间,无论是偶数或是奇数,将返回偶数

Code:[C#,Unity3d圣典]

         float MyRound(float f)
	{
		string s = f.ToString();
		string [] s0 = s.Split(new char[]{'.'});
		if (s0.Length == 1)
		{
			print("It is a integer");
			return 0;
		}

		if (s0.Length != 2)
		{
			print("something is wrong");
			return 0;
		}

		if (s0[1].Length == 1)//1位小数时
		{
			if (int.Parse(s0[1][0].ToString()) >= 5)
				return Mathf.FloorToInt(f) + 1;
			else
				return Mathf.FloorToInt(f);
		}

		float power = 10;
		for (int i = 2; i < s0[1].Length; i++)//s0[1].Length表示小数部分的位数
		{
			power *= 10;
		}
		f *= power;
		f = Mathf.FloorToInt(f);
		if (int.Parse(s0[1][s0[1].Length-1].ToString()) >= 5)
			f += 1;
		f /= power;
		return f;
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值