求一个算法(取最合理的数值的问题)
input output
1.6 2
6.0 6
7.1 8
36.5 40
72 80
91 100
156 200
450 450
789 800
901 950
980 1000
1156 1500
2420 2500
3726 4000
41234 45000
48912 50000
... ...
请问,谁能给我一个比较好的算法,谢谢.
------解决方案--------------------public class ConvertNumber
{
public int ConvertNum(double Num)
{
int TemInt = Convert.ToInt32(Num);
if (TemInt < 10)
{
if (Num > TemInt)
{
return TemInt + 1;
}
else
{
return TemInt;
}
}
else
{
int Factor = 5;
int NumLen = TemInt.ToString().Length;
for (int i = 2; i < NumLen; i++)
{
Factor *= 10;
}
int Multiple = TemInt / Factor;
int Residue = TemInt % Factor;
if (TemInt > 0)
{
return (Multiple + 1) * Factor;
}
else
{
return Multiple * Factor;
}
}
}
}
------解决方案--------------------public int ConvertNum(double num)
{
int factor=(int)Math.Pow(10,(int)Math.Log10(num));
if(factor> 10) factor/=2;
int multi=(int)num/factor;
return multi*factor <num?(multi+1)*factor:(int)num;
}