以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何实现整数个位为0?  (http://foxtable.com/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看看