对小数的四舍五入算法

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;
	}

对小数的四舍五入算法

时间: 2024-08-28 13:45:41

对小数的四舍五入算法的相关文章

WinCE的C#编程,对float型进行四舍五入保留两位小数,小数进行四舍五入操作,Math.Round的应用案例。

private  float ConvertFloat4Se5Ru(float flotValue) { int iValue = (int)Math.Round(flotValue * 10000); //小数点后两位前移,并四舍五入 flotValue = (float)(iValue / 10000.00f); return flotValue; } 申明:以上文字为"武汉汉码科技有限公司"原创,转载时务必注明出处. 技术分享,沟通你我,共同进步!www.hanma-scan.c

Java学习-047-数值格式化及小数位数四舍五入

此小工具类主要用于数值四舍五入.数值格式化输出,很简单,若想深入研究,敬请自行查阅 BigDecimal 或 DecimalFormat 的 API,BigDecimal.setScale(位数,四舍五入法)中四舍五入法有如下 7 种: 1. ROUND_UP:远离零方向舍入.向绝对值最大的方向舍入,只要舍弃位非0即进位. 2. ROUND_DOWN:趋向零方向舍入.向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况. 3. ROUND_CEILING:向正无穷方向舍入.向正最大方向靠拢.

C# 小数点后保留两位小数,四舍五入的函数及使用方法

Math.Round(45.367,2)     //Returns   45.37 Math.Round(45.365,2)     //Returns   45.36 说明: C#中的Round()不是我们中国人理解的四舍五入,是老外的四舍五入,是符合IEEE标准的四舍五入,具体是五舍六入. 下面的才是符合中国人理解的四舍五入 Math.Round(45.367,2,MidpointRounding.AwayFromZero);    //Returns   45.37 Math.Round

java double类型保留两位小数和四舍五入

package com.clzhang.sample; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.NumberFormat; public class DoubleTest { /** * 保留两位小数,四舍五入的一个老土的方法 * @param d * @return */ public static double fo

PHP_保留两位小数并且四舍五入_保留两位小数并且不四舍五入

php保留两位小数并且四舍五入 1 $num = 123213.666666; 2 echo sprintf("%.2f", $num); php保留两位小数并且不四舍五入 1 $num = 123213.666666; 2 echo sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -2)); php进一法取整 echo ceil(4.3); // 5 echo ceil(9.999); // 10

php保留两位小数并且四舍五入 保留两位小数并且不四舍五入

php保留两位小数并且四舍五入 $num = 5566.56831; echo sprintf("%.2f", $num); php保留两位小数并且不四舍五入 $num = 5566.56831; echo sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -2)); php进一法取整 echo ceil(4.2); // 5 echo ceil(9.999); // 10 php舍去法取整 echo

小数5.2500四舍五入保留1位小数的java算法之一

BigDecimal bd = new BigDecimal(5.2500); BigDecimal a = bd.setScale(1, BigDecimal.ROUND_HALF_UP); double b = a.doubleValue(); System.out.println(b);

java的四舍五入算法

粗力度的四舍五入为整数 1 package math; 2 3 public class MathRoundTest { 4 /** 5 * Math类中提供了三个与取整有关的方法:ceil,floor,round, 6 * 这些方法的作用于它们的英文名称的含义相对应,例如:ceil的英文意义是天花板,该方法就表示向上取整, 7 * Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11:floor的英文是地板, 8 * 该方法就表示向下取整,Math.flo

C#中小数点后保留两位小数,四舍五入的函数及使用方法

Math.Round(45.367,2) //Returns 45.37 Math.Round(45.365,2) //Returns 45.36 C#中的Round()不是我们中国人理解的四舍五入,是老外的四舍五入,是符合IEEE标准的四舍五入,具体是四舍六入,下面的才是符合中国人理解的四舍五入 Math.Round(45.367,2,MidpointRounding.AwayFromZero);//45.37 Math.Round(45.365,2,MidpointRounding.Away