小数四射五入、转换百分数
前台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) + "%"; } } } } }
数据库中特殊数据: