以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]什么原理?怎么提示值对于类型"Int16"太大? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=29239) |
-- 作者:skyhuigo007 -- 发布时间:2013/3/2 22:10:00 -- [求助]什么原理?怎么提示值对于类型"Int16"太大? 看图 板长、板宽、数量都是短整数的数据列,板长不可能超过500,板宽不可能超过300,数量不可能超过三位数,都是整数。平方是单精度小数的表达式列,表达式:板长*板宽*数量/10000 (板长板宽单位是厘米,平方单位是平方米,所以要除以10000,所以平方这列不可能超过7位有效数字,所以用单精度小数) 结果就提示值太大了。 然后把表达式改成:1*板长*板宽*数量/10000,竟然可以了! 然后再把数量改成整数的数据列,竟然也可以了! 似乎是计算的时候,板长*板宽,在板宽的数据列位置进行计算,然后前两者的计算值再放进数量列的位置进行计算,所以把数量列改成整数型,就放得下? 那么1*板长*板宽*数量/10000这个表达式的原理呢? 什么原理?小白无法理解~ 虽然可以用“1*”解决,但是很好奇啊~~~
[此贴子已经被作者于2013-3-2 22:49:42编辑过]
|
-- 作者:程兴刚 -- 发布时间:2013/3/2 22:17:00 -- 长、宽、数量三列既然是短整数列,为何不输入整数?如果要输入小数,改为双精度小数列,可以满足一般要求,指定数据类型时不要过分抠门儿,满足一般使用为准! |
-- 作者:skyhuigo007 -- 发布时间:2013/3/2 22:39:00 -- 厄,程老师,我表达式没写清楚,抱歉。表达式是:板长*板宽*数量/10000。 三个短整数列都是输入整数的,比如长190、宽60、数量55,单位是厘米,然后平方的单位是平方米,所以要再除以10000,可是还是提示数值太大~ 三个列都不可能超过三位数,所以我用5位数的短整数。而计算后的数值也不可能超过7个有效数字。 然后奇怪的来了,表达式改成:1*板长*板宽*数量 或者 1*板长*板宽*数量/10000 都可以计算~
|
-- 作者:程兴刚 -- 发布时间:2013/3/2 22:44:00 -- 这个才应该是正确的表达式:
(isnull([板长],0)*isnull([板宽],0)*isnull([数量],0))/10000 |
-- 作者:skyhuigo007 -- 发布时间: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*”就可以了,但是很好奇这是什么原理啊~
|