首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

算法(取最合理的数值的有关问题)

2012-01-05 
求一个算法(取最合理的数值的问题)inputoutput1.626.067.1836.54072809110015620045045078980090195098010

求一个算法(取最合理的数值的问题)
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;
}

热点排行