乏mily

导航

小数四射五入、转换百分数

前台repeater控件:

        <asp:Repeater ID="rptDetail" runat="server">
            <ItemTemplate>
            <tr>
            <td><%# Eval("Unit")%></td>
            <td><%# GetValue(Eval("TotalOutput"),++num)%></td>
            <td><%# Eval("Illustrate")%></td>
            <td><%# GetValue(Eval("Fund"),num)%></td>
            <td><%# GetPercent(Eval("PaidRate"), num)%></td>
            <td><%# GetValue(Eval("Unpaid"), num)%></td>
            <td><%# GetValue(Eval("MonthPay"), num)%></td>
            <td><%# GetPercent(Eval("AccountRate"), num)%></td>
            <td><%# Eval("PlayPay")%></td>
            <td><%# Eval("First")%></td>
            <td><%# Eval("Second")%></td>
            <td><%# Eval("Third")%></td>
            </tr>
            </ItemTemplate>
        </asp:Repeater>

后台方法:

        public int num=0; //用来记录当前循环的是第几行数据
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["OperateID"]!=null)
            {
                string OperateID = Request["OperateID"].ToString();
                //Bind(OperateID);
            }
        }

     //根据数据库中数据,返回符合条件的数据(四舍五入,保留两位小数)
protected string GetValue(object value, int numValue) { string str = value.ToString(); string[] a = str.Split('.'); if ((numValue <= 3) || (str == ""))//前三行,或为空的不转换(因为对应数据库内容的特殊性),原样输出 { return str; }
    
   else
       { if (a.Length == 1) { //整数 return str + ".00"; } else if (a[1].Length == 1)//只有一位小数补0 { return str + "0"; } else if (a[1].Length == 2)//两位小数,返回原值 { return str; } else { int n = Convert.ToInt32(a[1][2].ToString()); //12.1212,获取小数后第三位的值,判断是否四射五入 if (n > 4 && n <= 9) { if (a[0].Substring(0, 1) == "-")//负值时 { return string.Format("{0:F2}",(Convert.ToDouble(a[0] + "." + a[1].Substring(0, 2)) - 0.01)); } else { return string.Format("{0:F2}",(Convert.ToDouble(a[0] + "." + a[1].Substring(0, 2)) + 0.01)); } } else { return a[0] + "." + a[1].Substring(0, 2); } } } }
      

     //小数转换为百分数
protected string GetPercent(object value,int numValue) { string str = value.ToString(); string[] a = str.Split('.'); if ((numValue <= 3) || (str == ""))//前三行,或为空的不转换(因为对应数据库内容的特殊性),原样输出 { return str; } else if (str == "0") { return "0%"; } else if (str == "1") { return "100%"; } else { if (a.Length == 1)//特殊情况,对于非小数的情况 { return str; } else // 0到1之间的小数 { if (a[1].Length == 1)//一位小数 { return a[1] + "0%"; } else if (a[1].Length == 2)//两位小数 { return a[1] + "%"; } else //三位及以上小数 0.12345 { int n = Convert.ToInt32(a[1][2].ToString()); if (n > 4 && n <= 9) { return ((Convert.ToDouble(a[0] + "." + a[1].Substring(0, 2)) + 0.01)*100).ToString()+"%"; } else { return a[1].Substring(0, 2) + "%"; } } } } }

数据库中特殊数据:

posted on 2013-11-07 14:49  乏mily  阅读(298)  评论(0编辑  收藏  举报