decimal  x=2.3333;
  textbox.text =  x.tostring();打算去精度2,求解 

解决方案 »

  1.   

    这个结果应该是3吧,也有可能是2,不确定,只记得.net里面没有四舍五入
      

  2.   

    textbox.text = x.tostring("N2");
      

  3.   

    截取字符串,取.以后的数字,然后再+0,最后成0.333
    截取字符串用substring
      

  4.   

    看错了,不好意思...!!
    这次不会错了...
      Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的. 这个算法可以概括为:“四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一。”
        请看下面的例子:   Math.Round(3.44, 1); //Returns 3.4.  四舍   Math.Round(3.451, 1); //Returns 3.5  五后非零就进一
       Math.Round(3.45, 1); //Returns 3.4. 五后皆零看奇偶, 五前为偶应舍 去   Math.Round(3.75, 1);  //Returns 3.8  五后皆零看奇偶,五前为奇要进一
       Math.Round(3.46, 1); //Returns 3.5. 六入
    http://blog.csdn.net/lcyhjx/archive/2008/08/30/2851923.aspx
      

  5.   

    string str = ((decimal)2.3333).ToString("0.00");
      

  6.   

    我建议不要使用Math.Round函数,因为显示的时候会带来麻烦
    例如:
    decimal d = 3.85m;
    string s1 = d.ToString("N1"); 
    string s2=Math.Round(d,1).ToString();
    这时s1和s2的结果不一致,因为Math.Round用的是银行家舍入,而decimal.ToString()用的是普通的四舍五入,这种情况屏幕显示或打印报表时都会给软件的使用者带来混乱.我现在如果需要对数字进行舍入运算用的是这种方式:
    decimal d=3.885m;
    d=decimal.Parse(d.ToString("#0.00"));
    虽然低效,但无论是计算,还是显示,都是稳定的,如果将来.Net的某一个Service Pack改变了Math.Round或decimal.ToString()的内部实现方式的话,对软件的运行不会产生任何影响.
      

  7.   

    去精度2?什么意思?x.ToString("0.00");
      

  8.   

    微软在.Net中使用银行家舍入法,纯属给软件的开发带来添乱,因为SQL Server等许多软件都是用的普通的四舍五入,要程序员理解银行家舍入法没有任何意义,因为对于运算来说,不可改变的标准就是计算结果必须稳定,当多种语言开发的DLL,数据库都是一个应用程序的组成部分时,计算结果的不稳定会带来整个系统的稳定带来非常大的隐患.