以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]如何实现整数个位为0? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=33760)
|
-- 作者:guruww
-- 发布时间:2013/5/23 22:39:00
-- [求助]如何实现整数个位为0?
在实际使用中需要将运算结果有效位数保留到十位,如结果为1836,处理后变为1840。我开始预用convert函数,如convert(计算表达式/10,‘system.int16’)*10。计ue算表达式涉及的字段列的类型都是单精度小数。但电脑报错?这是为什么?那要如何才能实现呢?谢谢!
|
-- 作者:swaterj
-- 发布时间:2013/5/23 23:20:00
--
用 round2 函数 ,convert 函数用在表达式中,不能用在代码中
|
-- 作者:狐狸爸爸
-- 发布时间:2013/5/24 6:20:00
--
你的错误提示是什么?
我测试下面的表达式,是没有问题的哦:
Convert([数量] * [单价] * (1 - [折扣]) / 10, \'System.Int64\') * 10
|
-- 作者:guruww
-- 发布时间:2013/5/24 9:31:00
--
提示内容:表达式错误,如果确定表达式无语法错误,且参与运算的各列的名称准确无误,那么请检查各列的数据类型是否正确,例如只有数值列才能参与加、减、乘、除等数学运算!
我的具体情况是:convert(列名1/列名2*100,‘system.int16’)*10。 列名1和列名2都是单精度小数,表达式列类型是短整数(实际计算值不会超过范围)。输入是在表达式生成器中进行的。单独计算“列名1/列名2*1000”没有问题。具体数据比如,列名2=139,列名1=271.5, 计算值取整为1953,但我希望处理后为1950.
不知问题出在哪里?请指教!
[此贴子已经被作者于2013-5-24 9:31:26编辑过]
|
-- 作者:jspta
-- 发布时间:2013/5/24 9:42:00
--
以下是引用guruww在2013-5-24 9:31:00的发言:提示内容:表达式错误,如果确定表达式无语法错误,且参与运算的各列的名称准确无误,那么请检查各列的数据类型是否正确,例如只有数值列才能参与加、减、乘、除等数学运算!
我的具体情况是:convert(列名1/列名2*100,‘system.int16’)*10。 列名1和列名2都是单精度小数,表达式列类型是短整数(实际计算值不会超过范围)。输入是在表达式生成器中进行的。单独计算“列名1/列名2*1000”没有问题。具体数据比如,列名2=139,列名1=271.5, 计算值取整为1953,但我希望处理后为1950.
不知问题出在哪里?请指教!
[此贴子已经被作者于2013-5-24 9:31:26编辑过]
比较喜欢用代码,重来不用表达式。一不灵活,二用不来。。。。
|
-- 作者:XYT
-- 发布时间:2013/5/24 9:50:00
--
Convert([第一列] / [第二列]*100,\'System.Int16\')*10
|
-- 作者:XYT
-- 发布时间:2013/5/24 9:52:00
--
此主题相关图片如下:1.jpg
|
-- 作者:guruww
-- 发布时间:2013/5/24 10:12:00
--
反正我还是出这个问题。是不是使用System.int16等类型,系统需要安装什么东西或者需要进行设置?
|
-- 作者:狐狸爸爸
-- 发布时间:2013/5/24 15:23:00
--
没有道理的,将你的文件发上来。
注意System.int16值得范围有限,你改为System.int64看看
|