主题:请问如何取一个数的小数部分?
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
整数部分:(int)(a+0.5)
板凳
zhoubbss [专家分:0] 发布于 2006-06-03 15:24:00
四舍做到了,五入怎么办?0.1-0.9之间差异还是很大的!
3 楼
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
还是不妥:
//(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
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
是不是有现成的确函数啊?round试试看.
7 楼
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
个人觉得我的自己方法更加简单
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
取整的方法真的不错!但有时会有这样的问题 A = 77.23 B = 22.77如果把整数部分全部取掉,显示出来就是 77% 和 22%,不符合要求啊,要能四舍五入,但DOUBLE 类型的数得出的小数部分太长,我重新写了四舍五入的方法,但效果也不好.....!
我来回复