Foxtable(狐表)用户栏目专家坐堂 → [求助]什么原理?怎么提示值对于类型"Int16"太大?


  共有6917人关注过本帖树形打印复制链接

主题:[求助]什么原理?怎么提示值对于类型"Int16"太大?

帅哥哟,离线,有人找我吗?
skyhuigo007
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:13 积分:153 威望:0 精华:0 注册:2013/2/3 13:59:00
[求助]什么原理?怎么提示值对于类型"Int16"太大?  发帖心情 Post By:2013/3/2 22:10:00 [只看该作者]

看图
图片点击可在新窗口打开查看
板长、板宽、数量都是短整数的数据列,板长不可能超过500,板宽不可能超过300,数量不可能超过三位数,都是整数。平方是单精度小数的表达式列,表达式:板长*板宽*数量/10000  (板长板宽单位是厘米,平方单位是平方米,所以要除以10000,所以平方这列不可能超过7位有效数字,所以用单精度小数)
结果就提示值太大了。
然后把表达式改成:1*板长*板宽*数量/10000,竟然可以了!
然后再把数量改成整数的数据列,竟然也可以了!
似乎是计算的时候,板长*板宽,在板宽的数据列位置进行计算,然后前两者的计算值再放进数量列的位置进行计算,所以把数量列改成整数型,就放得下?
那么1*板长*板宽*数量/10000这个表达式的原理呢?
什么原理?小白无法理解~
虽然可以用“1*”解决,但是很好奇啊~~~
[此贴子已经被作者于2013-3-2 22:49:42编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40556 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/2 22:17:00 [只看该作者]

长、宽、数量三列既然是短整数列,为何不输入整数?如果要输入小数,改为双精度小数列,可以满足一般要求,指定数据类型时不要过分抠门儿,满足一般使用为准!


 回到顶部
帅哥哟,离线,有人找我吗?
skyhuigo007
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:13 积分:153 威望:0 精华:0 注册:2013/2/3 13:59:00
  发帖心情 Post By:2013/3/2 22:39:00 [只看该作者]

厄,程老师,我表达式没写清楚,抱歉。表达式是:板长*板宽*数量/10000。
三个短整数列都是输入整数的,比如长190、宽60、数量55,单位是厘米,然后平方的单位是平方米,所以要再除以10000,可是还是提示数值太大~
三个列都不可能超过三位数,所以我用5位数的短整数。而计算后的数值也不可能超过7个有效数字。
然后奇怪的来了,表达式改成:1*板长*板宽*数量  或者  1*板长*板宽*数量/10000  都可以计算~

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40556 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/2 22:44:00 [只看该作者]

这个才应该是正确的表达式:

 

(isnull([板长],0)*isnull([板宽],0)*isnull([数量],0))/10000


 回到顶部
帅哥哟,离线,有人找我吗?
skyhuigo007
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:13 积分:153 威望:0 精华:0 注册:2013/2/3 13:59:00
  发帖心情 Post By:2013/3/2 22:53:00 [只看该作者]

(1*[长1]*[宽1]*[数1]+1*IsNull([长2],0)*IsNull([宽2],0)*IsNull([数2],0)+1*IsNull([长3],0)*IsNull([宽3],0)*IsNull([数3],0))/10000
以上是我可以计算的表达式,长、宽、数一共9列都是短整数,表达式列[平方]是单精度小数。
然后去掉“1*”就提示值太大~

程老师再看看我一楼发的,重新编辑过了。

解决方法已经有了,就是前面加个“1*”就可以了,但是很好奇这是什么原理啊~

 回到顶部