DataColumn dc = new DataColumn();
dc.ColumnName = "bfb";
dc.Expression ="(sl/"+b+")";
dt.Columns.Add(dc);
sl,b都是int型的,但添加这一列后是 0.1123214123123
现在想让它显示 11.23%咋整啊????
解决方案 »
- 刚学ASP很多东西不懂,向各位高手请教!
- windows7下,使用sqlserver2005,有没有必要安装SP3包?还想问一下,sqlserver2005能使用全文搜索功能么
- treeview节点后加个记录数
- 又是一棘手的问题,IE打印的问题
- 我想把Dropdownlist里面每一格都给不同的颜色 什么做啊?
- 请各位高手帮帮忙,急急急呀!
- 如何得到datagrid控件绑定数据后是多少行和列?
- 请教一个javascript的问题!
- 安装xp pro 后打开原先硬盘上的项目出错.. 请专家解答! 急!!
- 怎样实现datagrid的一列元素有不同的超链接?
- 把网页导出为PDF文件
- <Img>为什么不能显示图片?
显示的时候用Format P2
int或者double或者string ??
double.parse("10.222222").ToString("0.00");
结果10.22
Console.WriteLine("{0:P}", i); // 12,345,600.00 %
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。
要留几个小数点 只要在Tostring("")写f几 就行啦
public class FormatSpecApp
{
public static void Main(string[] args)
{
int i = 123456;
Console.WriteLine("{0:C}", i); // ¥123,456.00
Console.WriteLine("{0:D}", i); // 123456
Console.WriteLine("{0:E}", i); // 1.234560E+005
Console.WriteLine("{0:F}", i); // 123456.00
Console.WriteLine("{0:G}", i); // 123456
Console.WriteLine("{0:N}", i); // 123,456.00
Console.WriteLine("{0:P}", i); // 12,345,600.00 %
Console.WriteLine("{0:X}", i); // 1E240
}
}精度控制标识控制了有效数字的个数或者十进制数小数的位数。Console.WriteLine("{0:C5}", i); // ¥123,456.00
Console.WriteLine("{0:D5}", i); // 123456
Console.WriteLine("{0:E5}", i); // 1.23456E+005
Console.WriteLine("{0:F5}", i); // 123456.00000
Console.WriteLine("{0:G5}", i); // 1.23456E5
Console.WriteLine("{0:N5}", i); // 123,456.00000
Console.WriteLine("{0:P5}", i); // 12,345,600.00000 %
Console.WriteLine("{0:X5}", i); // 1E240
{0:N2}% 小数点保留2位有效数字加百分号;
double i = 0.1123214123123 ;
Console.WriteLine("{0:N2}%", i);
Math.Round(Decimal, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Double, Int32, MidpointRounding)将小数值舍入到指定精度。MidpointRounding 参数,指定当一个值正好处于另两个数中间时如何舍入这个值该参数是个 MidpointRounding 枚举此枚举有两个成员,MSDN 中的说明是:
AwayFromZero 当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
ToEven 当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。注 意!这里关于 MidpointRounding.AwayFromZero 的说明是错误的!实际舍入为两个值中绝对值较大的值。不过 MSDN 中的 例子是正确的,英文描述原文是 it is rounded toward the nearest number that is away from zero.所以,要实现四舍五入函数,对于正数,可以加一个 MidpointRounding.AwayFromZero 参数指定当一个数字是其他两个数字的中间值时其舍入为两个值中绝对值较大的值,例:Math.Round(3.45, 2, MidpointRounding.AwayFromZero)不过对于负数上面的方法就又不对了因此需要自己写个函数来处理
第一个函数:
double Round(double value, int decimals)
{
if (value < 0)
{
return Math.Round(value + 5 / Math.Pow(10, decimals + 1), decimals, MidpointRounding.AwayFromZero);
}
else
{
return Math.Round(value, decimals, MidpointRounding.AwayFromZero);
}
} 第二个函数:
double Round(double d, int i)
{
if(d >=0)
{
d += 5 * Math.Pow(10, -(i + 1));
}
else
{
d += -5 * Math.Pow(10, -(i + 1));
}
string str = d.ToString();
string[] strs = str.Split('.');
int idot = str.IndexOf('.');
string prestr = strs[0];
string poststr = strs[1];
if(poststr.Length > i)
{
poststr = str.Substring(idot + 1, i);
}
string strd = prestr + "." + poststr;
d = Double.Parse(strd);
return d;
}参数:d表示要四舍五入的数;i表示要保留的小数点后为数。其中第二种方法是正负数都四舍五入,第一种方法是正数四舍五入,负数是五舍六入。备注:个人认为第一种方法适合处理货币计算,而第二种方法适合数据统计的显示。
"(sl/" + b + ")"这里有问题
{
dr[2] = string.Format("{0:N2}", dr[2]);
}