社区
C#
帖子详情
怎样在DataColumn.Expression表达式中使用四舍五入,或者只舍不入,或者只入不舍的函数
ljmemail
2007-06-05 06:57:32
我要在datatable中定义一些公式列,公式中需要使用到四舍五入,或者只舍不入,或者只入不舍的函数,但是DataColumn.Expression不支持此类函数,请告人指点有没有什么方法能实现此需求。
...全文
851
6
打赏
收藏
怎样在DataColumn.Expression表达式中使用四舍五入,或者只舍不入,或者只入不舍的函数
我要在datatable中定义一些公式列,公式中需要使用到四舍五入,或者只舍不入,或者只入不舍的函数,但是DataColumn.Expression不支持此类函数,请告人指点有没有什么方法能实现此需求。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
表达式
命名空间: System.
Data
程序集: System.
Data
(在 System.
Data
.dll
中
)属性值类型:System.String用来计算列的值,或创建聚合列的
表达式
。
表达式
的返回类型由列的
Data
Type 来确定。 异常异常条件ArgumentExc
Data
Column
.
Expression
语法
Data
Column
中
提供了
Expression
属性。他的定义如下: 获取或设置
表达式
,用于筛选行、计算列
中
的值或创建聚合列。
Expression
属性的一个用途是创建计算出的列。 例如,若要计算税值,就要将单价乘以特定地区的...
Data
Column
.
Expression
属性
Data
Column
.
Expression
属性 获取或设置
表达式
,用于筛选行、计算列
中
的值或创建聚合列。 命名空间:System.
Data
程序集:System.
Data
(在 system.
data
.dll
中
) 语法 C# C++ VB ...
Data
Column
.
Expression
属性 [C#]
请参见
Data
Column
类 |
Data
Column
成员 | System.
Data
命名空间 | 代码:创建
表达式
列 (Visual Basic) |
Data
Column
成员(Visual J# 语法) | C++ 托管扩展编程 要求平台: Windows 98, Windows NT 4.0, ...
Data
Column
.
Expression
的作用
Data
Column
用于脱机处理数据的时候多。它不仅存储
Data
Table
中
的数据,而且还存储了有关该列结构的信息。常用到的属性有:
Data
Type,ReadOnly,AllowDBNull,Unique,Default以及AutoIncrement等。这些属性从字面意思就可...
C#
110,535
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章