比如说 我输入一个数   10.45446
我想要它小数部分四舍五入,仅仅只是小数部分, 经过四舍五入后输出后为10.46,小数部分仅保存2位

解决方案 »

  1.   

    好像可以用 Math.Round ,但里面重载太多,不知道怎么用,有人知道么?
      

  2.   

    Math.Round(10.45446,2) 最后输出是10.45  应该是10.46才对啊
      

  3.   


    /// <summary>
    /// 小数位数计算
    /// </summary>
    /// <param name="je">数值</param>
    /// <param name="xsw">小数位</param>
    /// <param name="jefs">0.四舍五入1.进1法 2.舍1法 3.下取整四舍六入五成双</param>
    /// <res></res>
    public static double f_round(double je, int xsw, int jefs)
    {
    switch (jefs) {
    case 0:
    //四舍五入
    return Math.Round(je, xsw, MidpointRounding.AwayFromZero);
    case 1:
    //进1(上取整)
    string str = "1";
    for (int i = 1; i <= xsw; i++) {
    str += "0";
    } int temp1 = Convert.ToInt32(str);
    return Math.Floor(je * temp1) / temp1;
    case 2:
    //舍1(下取整)
    break; case 3:
    //四舍六入五成双
    break; }}
      

  4.   

    格式化方法请参考msdn:http://msdn.microsoft.com/zh-cn/library/xh1dzhdx
      

  5.   

     string s = (10.45446).ToString("f2");
    楼主那个不是四舍五入吧?
      

  6.   

    http://blog.csdn.net/xianfajushi/article/details/7214070
      

  7.   

    c#的Math.Round是靠近偶数法,0.445 结果是.44 0.455结果是.46 这和财务的算法是一致的。如果是金额的计算应该用这个方法而不是四舍五入。
      

  8.   

    那就试试这个:
    decimal d = 10.45446m;
    Math.Ceiling(d * 100) / 100OR Math.Round(d + 0.005)
      

  9.   

    http://msdn.microsoft.com/zh-cn/library/system.math.round(VS.80).aspxdouble d = Math.Round(10.45446, 2, MidpointRounding.AwayFromZero);