主题:请问如何取一个数的小数部分?
			 zhoubbss
				 [专家分:0]  发布于 2006-06-03 10:04:00
 zhoubbss
				 [专家分:0]  发布于 2006-06-03 10:04:00							
			想写一个四舍五入的方法,判断小数部分如果是0.1-0.4,则只取整数部分,如果是0.5-0.9则整数部分加1,全部用判断写下来效率太低,请问有没有好的办法?谢谢
						
					 
		
			
回复列表 (共9个回复)
		
								
				沙发
				
					 jzyray [专家分:20610]  发布于 2006-06-03 13:26:00
jzyray [专家分:20610]  发布于 2006-06-03 13:26:00				
				整数部分:(int)(a+0.5)
							 
						
				板凳
				
					 zhoubbss [专家分:0]  发布于 2006-06-03 15:24:00
zhoubbss [专家分:0]  发布于 2006-06-03 15:24:00				
				四舍做到了,五入怎么办?0.1-0.9之间差异还是很大的!
							 
						
				3 楼
				
					 jzyray [专家分:20610]  发布于 2006-06-03 16:44:00
jzyray [专家分:20610]  发布于 2006-06-03 16:44:00				
				五入也做到了啊:
a=0.6时,(int)(a+0.5)=1,整数部分不就进一了
							 
						
				4 楼
				
					 zhoubbss [专家分:0]  发布于 2006-06-03 20:24:00
zhoubbss [专家分:0]  发布于 2006-06-03 20:24:00				
				还是不妥:
//(int)(a+0.5)+1 先把A取整,然后再加上0.5,再加上1;
但我需要的是:
 if (a>=3.1 && a<=3.4)
    a = 3;
 else if ((a>=3.5 && a<=3.9)||(a>=4.1 && a<=4.4))
    a = 4;
 .
 .
 .
 else if ((a>=22.5 && a<=22.9)||(a>=23.1 && a<=23.4))
    a = 23;
 else if (a>=23.5 && a<=23.9)
    a = 24;
我想先把小数取出来,做一个循环来判断.你再看看有没有其他的办法?
							 
						
				5 楼
				
					 zhoubbss [专家分:0]  发布于 2006-06-03 20:34:00
zhoubbss [专家分:0]  发布于 2006-06-03 20:34:00				
				OH,用取整应该可以:
double b,tmp;
tmp = a;
b = tmp - (int)a;
if (b>=0.1 && b<=0.4)
{
    return (int)a;
}
else if (b >=0.5 && b<=0.9)
{
    return (int)(a+1);
}
         
							 
						
				6 楼
				
					 meworld [专家分:0]  发布于 2006-06-06 08:44:00
meworld [专家分:0]  发布于 2006-06-06 08:44:00				
				是不是有现成的确函数啊?round试试看.
							 
						
				7 楼
				
					 liwencocolee [专家分:670]  发布于 2006-06-08 22:12:00
liwencocolee [专家分:670]  发布于 2006-06-08 22:12:00				
				个人觉得我的自己方法更加简单
public static double Round(double value,int digite) 
{ 
string strValue = value.ToString(); 
int index = (strValue.ToString()).IndexOf("."); 
if (strValue.IndexOf(".") > 0) 
{ 
strValue += "1"; 
} 
return Math.Round(double.Parse(strValue),digite); 
} 
							 
						
				8 楼
				
					 liwencocolee [专家分:670]  发布于 2006-06-08 22:13:00
liwencocolee [专家分:670]  发布于 2006-06-08 22:13:00				
				个人觉得我的自己方法更加简单
public static double Round(double value,int digite) 
{ 
string strValue = value.ToString(); 
int index = (strValue.ToString()).IndexOf("."); 
if (strValue.IndexOf(".") > 0) 
{ 
strValue += "1"; 
} 
return Math.Round(double.Parse(strValue),digite); 
} 
							 
						
				9 楼
				
					 zhoubbss [专家分:0]  发布于 2006-06-09 16:31:00
zhoubbss [专家分:0]  发布于 2006-06-09 16:31:00				
				取整的方法真的不错!但有时会有这样的问题 A = 77.23 B = 22.77如果把整数部分全部取掉,显示出来就是 77% 和 22%,不符合要求啊,要能四舍五入,但DOUBLE 类型的数得出的小数部分太长,我重新写了四舍五入的方法,但效果也不好.....!
							 
									
			
我来回复