社区
C#
帖子详情
怎样在DataColumn.Expression表达式中使用四舍五入,或者只舍不入,或者只入不舍的函数
ljmemail
2007-06-05 06:57:32
我要在datatable中定义一些公式列,公式中需要使用到四舍五入,或者只舍不入,或者只入不舍的函数,但是DataColumn.Expression不支持此类函数,请告人指点有没有什么方法能实现此需求。
...全文
1171
6
打赏
收藏
怎样在DataColumn.Expression表达式中使用四舍五入,或者只舍不入,或者只入不舍的函数
我要在datatable中定义一些公式列,公式中需要使用到四舍五入,或者只舍不入,或者只入不舍的函数,但是DataColumn.Expression不支持此类函数,请告人指点有没有什么方法能实现此需求。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
linschangqian
2012-10-29
打赏
举报
回复
补充下:银行家算法的“四舍五入”是,当目标数是奇行偶不进,即 4.5 转换为 4,而 5.5 转换为 6。
Convert.ToInt32(浮点数)的是 舍入为最接近的 32 位有符号整数的 value。如果 value 为两个整数中间的数字,则返回二者中的偶数;即 4.5 转换为 4,而 5.5 转换为 6,也即。
加上0.00000001后,则不再是两个整数的中间数,满足了传统意义上的四舍五入。
linschangqian
2012-10-29
打赏
举报
回复
按理解:Convert.ToInt32(浮点数)应该是应用了银行家算法进行“四合五入”,所以才加上 0.000000001, 0.000000001不能影响精度,只是作为提升数据类型用,要调整的是将数据变回来的情况:
Convert((iUnitCost*iQuantity)*100+0.00000001,'System.Int32')/
100.0
因为 整数99/整数100 的结果是整数零。
guomaodianzi
2012-04-11
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
自己解决了(精度为小数点后面两位),方法如下:
//四舍五入
adt.Columns[ "Salary3 "].Expression = "Convert(Salary1 * 100 + 0.000000001, 'System.Int32 ') / 100 ";
……
[/Quote]
我觉得需要修正下:
//四舍五入
adt.Columns[ "Salary3 "].Expression = "Convert(Salary1 * 100 + 0.1, 'System.Int32 ') / 100 ";
chenli133
2007-06-06
打赏
举报
回复
关注中...
ljmemail
2007-06-06
打赏
举报
回复
up
ljmemail
2007-06-06
打赏
举报
回复
自己解决了(精度为小数点后面两位),方法如下:
//四舍五入
adt.Columns["Salary3"].Expression = "Convert(Salary1 * 100 + 0.000000001,'System.Int32') / 100";
//只舍不入
adt.Columns["Salary4"].Expression = "Convert((Salary1 - 0.005 + 0.000000001) * 100,'System.Int32') / 100";
//只入不舍
adt.Columns["Salary5"].Expression = "Convert((Salary1 + 0.005 - 0.000000001) * 100,'System.Int32') / 100";
注意:
这里面如果不加0.000000001则0.125被“四舍五入”成0.12,
0.1251会才会被“四舍五入”成0.13的问题。
Data
Column
.
Expression
属性
获取或设置
表达式
,用于筛选行、计算列
中
的值或创建聚合列。[Visual Basic]Public Property
Expression
As String[C#]public string
Expression
{get; set;}[C++]public: __property String* get_
Expression
();public: __property vo
Data
Column
.
Expression
属性
下面的示例在
Data
Table
中
创建三个列。第二和第三列包含
表达式
;第二列
使用
可变税率计算税款,第三列将计算的结果添加到第一列的值。结果表显示在
Data
Grid 控件
中
。 1 private void Calc
Column
s() 2 { 3
Data
Table table = new
Data
Table (); 4 5 // Create
C#
中
Data
Table
中
的Compute方法
使用
收集
Compute
函数
的参数就两个:
Expression
,和Filter。 Expresstion是计算
表达式
,关于
Expression
的详细内容请看这里“http://msdn2.microsoft.com/zh-cn/library/system.
data
.
data
column
.
expression
(VS.80).aspx”。而Filter则是条件过滤器,类似sql的Where条件。
Data
Table的Compute功能详解
在为筛选器创建
表达式
时,用单引号将字符串括起来:"LastName = 'Jones'"下面的字符是特殊字符,如下面所解释的,如果它们用于列名称
中
,就必须进行转义:\n (newline)\t (tab)\r (carriage return)~()#\/=><+-*%&|^'"[]如果列名称包含上面的字符之一,该名称必须用
中
括号括起来。例如,若要在
表达式
中
使用
名为“...
C# 一些零零碎碎的方法,都是些帮助类,留存,也希望能帮助到各位
------------------------------------------------------------------------------------------------------------ 1、Table转List /// <summary> /// Table转List /// </summary>...
C#
111,092
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章