C# 不四舍五入的问题,之纠结,望大家进来给予帮助,谢谢。。。 float Num = 0.1256f; string mNum = Num.ToString("#0.000"); MessageBox.Show(mNum);在.net里,现在的mNum=0.126,而我要的答案是小数点后面是0.125,不需要四舍五入,请问该怎么做 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 substring() 这个感觉比较耗时,所以排除不用,另外有没有其他的方法? string mNum =( Math.Floor(Num*1000)/1000).ToString();substring()排除这两种,还有没有其他的办法 string mNum = (Math.Truncate(Num * 1000) / 1000.0f).ToString("0.000"); 感觉跟string mNum =( Math.Floor(Num*1000)/1000).ToString();这个一样,占内存 .Net没有四舍五入算法,只有IEEE标准中的Banker's Round,也就是银行家舍入,即四舍六入五取偶。要在.net里实现四舍五入,只有通过类似4楼的方法 Math.Truncate()向(零)舍去小数部分 float Num = 0.1256f;string mNum = Math.Round(Num, 3).ToString("#0.000"); Round好象就是四舍六入五取偶。 float Num = 0.1256f; Console.WriteLine( Regex.Match(Num.ToString(),@"[\d]+.[\d]{0,3}")); 大哥我试了,(int)(num*1000)/1000;这样根本没用 string mNum = (Num-0.0005).ToString("#0.000"); Math.Round(3.44, 1); //Returns 3.4.Math.Round(3.45, 1); //Returns 3.4.Math.Round(3.46, 1); //Returns 3.5. float Num = 0.1256f;Num=Num-0.0005f; string mNum = Num.ToString("#0.000"); MessageBox.Show(mNum); 当然(int)(Convert.ToInt32(num * 1000) / 1000) Convert.ToInt32(num * 1000) / 1000.0f Convert.ToInt32(125.6)是四舍五入的(int)125.6是不会四舍五入的 float Num = 0.1256f; string pattern=@"(?s)\d{1}[.]{1}\d{3}"; Regex regex = new Regex(pattern); Console.WriteLine(regex.Match(Num.ToString()).Value); 咱说句实话,楼主要是嫌耗资源耗内存什么的,根本就不应该用c#。绝对的,.net平台下的都不能用,java也是。你想想,这类语言本来就是要极大地消耗资源的。这样吧,用汇编,mov来mov去的,还随心所欲。 //为满足四舍五入,作以下处理,加上一个极小的数prevValue = prevValue + 0.000001m;//得到四舍五入后的人数gradeNum = (int)Math.Round(prevValue, 0); 求C# 正则表达式 c#中多线程进度条问题,急 XML树存入数据库的问题 通过web Service得到dataset ,我想把DataSet中的内容全部放到数据库对应的表中 曲线显示 请教一个很简单正则匹配表达式,有些不解,快速结帖 请教在DataGrid(Winform里)的删除一行数据的问题 C#中, 对数据库的操作,使用递归调用出错(出错信息为OleDbCommand是当前正忙的Open,Fectching。) 怎样获得本机所注册的ole db provider的数据? listview的Column怎样让它的宽度随文字长短自动变化? C# 问题 窗口代码的问题。求教啊
string mNum =( Math.Floor(Num*1000)/1000).ToString();
substring()排除这两种,还有没有其他的办法
string mNum = (Math.Truncate(Num * 1000) / 1000.0f).ToString("0.000");
这个一样,占内存
要在.net里实现四舍五入,只有通过类似4楼的方法
string mNum = Math.Round(Num, 3).ToString("#0.000");
Console.WriteLine( Regex.Match(Num.ToString(),@"[\d]+.[\d]{0,3}"));
Math.Round(3.45, 1); //Returns 3.4.
Math.Round(3.46, 1); //Returns 3.5.
Num=Num-0.0005f;
string mNum = Num.ToString("#0.000");
MessageBox.Show(mNum);
(int)125.6是不会四舍五入的
float Num = 0.1256f;
string pattern=@"(?s)\d{1}[.]{1}\d{3}";
Regex regex = new Regex(pattern);
Console.WriteLine(regex.Match(Num.ToString()).Value);
//为满足四舍五入,作以下处理,加上一个极小的数
prevValue = prevValue + 0.000001m;
//得到四舍五入后的人数
gradeNum = (int)Math.Round(prevValue, 0);