c#小数全舍 问题?急

liangzhl 2009-11-05 11:51:42
比如数字是3.4567 那么我要得到3.45 或者3.456 要怎么写?或者有什么函数?
...全文
861 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jave.Lin 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liangzhl 的回复:]
也不是小数部分全不去掉,是我要取小数后面几位就保留几位,不管什么四舍五入,全部不要的就去掉,取到小数后面两位就是3.45 取到小数后面三位就是3.456
[/Quote]

哦,明白,你意思是自定义取小数位数?

//方法
private float RemoveDecimal(float number, int SaveDecimalCount)
{
float result=0;
string number_str=number.ToString();
try
{
string int_number=number_str.Split('.')[0];//整数部分字符串
string dec_number=number_str.Split('.')[1];//小数部分字符串
if(SaveDecimalCount<=dec_number.Length)
{
dec_number=dec_number.SubString(0,SaveDecimalCount);
}
else
dec_number=dec_number.SubString(0,dec_number.Length);
result=Convert.ToSingle(int_number+dec_number);
}
catch
{
MessageBox.Show("非数字");
return result;
}
return result;
}
//调用方法RemoveDecimal(float number)
private void ActionMethod()
{
float number=3.456;
number=RemoveDecimal(number,1);
MessageBox.Show(number);//显示'3.4'}
number=RemoveDecimal(number,2);
MessageBox.Show(number);//显示'3.45'}
number=RemoveDecimal(number,3);
MessageBox.Show(number);//显示'3.456'}
number=RemoveDecimal(number,4);
MessageBox.Show(number);//显示'3.456'}//因为4大于小数位,所以直接取原有小数长度即可。
}


以上代码未经测试,TXT下写的。只供参考。
心之为乐 2009-11-05
  • 打赏
  • 举报
回复
没要 函数, 想法很多
心之为乐 2009-11-05
  • 打赏
  • 举报
回复
Decimal DNum=3.3.456;
string tempNum=Dnum.ToString();
int DotIndex=tempNum.indexof('.');
string strYouWantNUM=tempNum.SubString(0,DotIndex+1+ 保留小数点几位):
huing 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 starfd 的回复:]
Math.Round(3.4567,2,MidpointRounding.AwayFromZero) //结果3.45
Math.Round(3.4567,2) //结果3.46
[/Quote]

2代表保留小数位数,MidpointRounding.AwayFromZero表示舍去(不会4舍5入)
liangzhl 2009-11-05
  • 打赏
  • 举报
回复
也不是小数部分全不去掉,是我要取小数后面几位就保留几位,不管什么四舍五入,全部不要的就去掉,取到小数后面两位就是3.45 取到小数后面三位就是3.456
Jave.Lin 2009-11-05
  • 打赏
  • 举报
回复
是小数部分全部舍去吗?

这样解决:
//方法
private float RemoveDecimal(float number)//这里可以是float或是double看你怎么定
{
float result=0;
string number_str=number.ToString();
try
{
result=Convert.ToInt32(number_str.Split('.')[0]);
}
catch
{
MessageBox.Show("非数字");
return result;
}
return result;
}
//调用方法RemoveDecimal(float number)
private void ActionMethod()
{
float number=3.456;
number=RemoveDecimal(number);
MessageBox.Show(number);//显示'3',小数去掉了。
}


以上代码未经测试。供参考。
liangzhl 2009-11-05
  • 打赏
  • 举报
回复
Math.Round(3.4567,2,MidpointRounding.AwayFromZero) //结果3.45
也不对啊,我要的是全舍啊
如3.4567 全舍就是3.45
3.5678 3.56
mbh0210 2009-11-05
  • 打赏
  • 举报
回复
Math.Round
  • 打赏
  • 举报
回复
Math.Round(3.4567,2,MidpointRounding.AwayFromZero) //结果3.45
Math.Round(3.4567,2) //结果3.46
深海之蓝 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 starfd 的回复:]
Math.Round(数字,位数)
[/Quote]
  • 打赏
  • 举报
回复
Math.Round(数字,位数)
liherun 2009-11-05
  • 打赏
  • 举报
回复

private double fangfa(double dou, int weishu)
{
string[] str= dou.ToString().Split('.');
if (str.Length == 1)
return dou;
else
{
if (str[1].Length < weishu)
return dou;
dou = Double.Parse(str[0] + "." + str[1].Substring(0, weishu));
return dou;
}
}
hhc123 2009-11-05
  • 打赏
  • 举报
回复

      还得判断j不可以大于i.length-i.Tostring().IndexOf('.'),大于了怎么处理
我新手,请多多指教

       
nashina 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 linjf520 的回复:]
引用 7 楼 liangzhl 的回复:
也不是小数部分全不去掉,是我要取小数后面几位就保留几位,不管什么四舍五入,全部不要的就去掉,取到小数后面两位就是3.45 取到小数后面三位就是3.456


哦,明白,你意思是自定义取小数位数?

C# code//方法privatefloat RemoveDecimal(float number,int SaveDecimalCount)
{float result=0;string number_str=number.ToString();try
{string int_number=number_str.Split('.')[0];//整数部分字符串string dec_number=number_str.Split('.')[1];//小数部分字符串if(SaveDecimalCount<=dec_number.Length)
{
dec_number=dec_number.SubString(0,SaveDecimalCount);
}else
dec_number=dec_number.SubString(0,dec_number.Length);
result=Convert.ToSingle(int_number+dec_number);
}catch
{
MessageBox.Show("非数字");return result;
}return result;
}//调用方法RemoveDecimal(float number)privatevoid ActionMethod()
{float number=3.456;
number=RemoveDecimal(number,1);
MessageBox.Show(number);//显示'3.4'} number=RemoveDecimal(number,2);
MessageBox.Show(number);//显示'3.45'} number=RemoveDecimal(number,3);
MessageBox.Show(number);//显示'3.456'} number=RemoveDecimal(number,4);
MessageBox.Show(number);//显示'3.456'}//因为4大于小数位,所以直接取原有小数长度即可。}

以上代码未经测试,TXT下写的。只供参考。
[/Quote]
hhc123 2009-11-05
  • 打赏
  • 举报
回复
private void button1_Click(object sender, EventArgs e)
{
float i = float.Parse(textBox1.Text);

float k = ReturnInt(i,3);
MessageBox.Show(k.ToString());

}
private float ReturnInt(float i,int j)//i为你的小数,j为舍到小数到后的第几位
{
return float.Parse( i.ToString().Substring(0,i.ToString().IndexOf('.')+(j-1)));
}这办法不知道适合你不
hhc123 2009-11-05
  • 打赏
  • 举报
回复
string x = textBox1.Text.ToString();
int i= x.IndexOf('.');
int ttt = int.Parse(x.Substring(0,x.IndexOf('.')));
MessageBox.Show(ttt.ToString());

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧