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