以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 根据计算结果选定相应数值  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=19983)

--  作者:黄力
--  发布时间:2012/5/26 10:11:00
--  [求助] 根据计算结果选定相应数值
请教各位大侠:当计算出两个数值后(上差 和 下差),如何用Select Case语句判定应该选用这两个数值之间的相应的数值(根据上差和下差数值的范围,选用几个固定数值当中符合的一个数值)并显示在窗口的文本框内,我上传附件给各位帮看看,小弟非常感激。图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:计算公式.rar


--  作者:y2287958
--  发布时间:2012/5/26 11:03:00
--  
(根据上差和下差数值的范围,选用几个固定数值当中符合的一个数值)

这句话,俺没看懂。
生性愚笨啊

--  作者:黄力
--  发布时间:2012/5/26 11:32:00
--  

比如:上差是3.71 下差是3.58     我的固定数值有3.55  3.70  3.85  4  4.15  4.3  4.45  4.6  那么我应该选3.7

上差最大数值,下差是最小数值,也就是3.58~3.71之间,固定数值有3.55  3.70  3.85  4  4.15  4.3  4.45  4.6 ,判断应该选那个数值图片点击可在新窗口打开查看


--  作者:FoxMan
--  发布时间:2012/5/26 12:38:00
--  
Dim sq,xq,Avg1,qe1,nD1,qs1 As Double
Dim Dbs As Double() ={3.55,3.70,3.85,4 ,4.15,4.3,4.45,4.6}
sq =3.71
xq =3.58
Avg1=(sq+xq)/2   
qs1 =  Dbs(0)
qe1 = Math.Abs(Dbs(0) -Avg1)

For Each nD1 In Dbs
    If Math.Abs(nD1 -Avg1) < qe1 Then      
        qs1 = nD1
    End If
Next

Output.Show(qs1 )


--  作者:黄力
--  发布时间:2012/5/26 12:38:00
--  

还有如何设置窗口文本框为两位小数


图片点击可在新窗口打开查看此主题相关图片如下:999副本.jpg
图片点击可在新窗口打开查看


--  作者:黄力
--  发布时间:2012/5/26 13:42:00
--  

我刚刚换了一个上下差数值分别为:4.19和3.95的时候结果输出是4.6  按理应是4.15

不知哪里出写错了


--  作者:程兴刚
--  发布时间:2012/5/26 13:57:00
--  
上差和下差之间的固定数有可能出现两个或多个怎么办?(也就是上差和下差之间的差距过大时,比如输入上差3.88,输入下茬3.50时)

--  作者:黄力
--  发布时间:2012/5/26 14:44:00
--  

不好意思,我没有把上下差计算公式列出来,计算公式是这样的:

3.34+a+b-d-e-0.15≤δ≤3.34+a+b-d-e,  δ 系列尺寸为:3.55±0.1  3.70±1  3.85±0.1  4±0.1  4.15±0.1  4.3±0.1   4.45±0.1   4.6±0.1   所以上下差之间只有0.15的值,不会有两个值的。


--  作者:黄力
--  发布时间:2012/5/26 15:09:00
--  

3.34+a+b-d-e-0.15≤δ≤3.34+a+b-d-e

其中3.34和0.15是固定值,不会改变的。


--  作者:lkqing
--  发布时间:2012/5/26 15:11:00
--  
以下是引用FoxMan在2012-5-26 12:38:00的发言:
Dim sq,xq,Avg1,qe1,nD1,qs1 As Double
Dim Dbs As Double() ={3.55,3.70,3.85,4 ,4.15,4.3,4.45,4.6}
sq =3.71
xq =3.58
Avg1=(sq+xq)/2   
qs1 =  Dbs(0)
qe1 = Math.Abs(Dbs(0) -Avg1)

For Each nD1 In Dbs
    If Math.Abs(nD1 -Avg1) < qe1 Then      
        qs1 = nD1
    End If
Next

Output.Show(qs1 )

改改,试试:

Dim sq,xq,Avg1,nD1,qs1 As Double
Dim Dbs As Double() ={3.55,3.70,3.85,4 ,4.15,4.3,4.45,4.6}
sq =4.5
xq =4.28
Avg1=(sq+xq)/2  

 

For Each nD1 In Dbs
    If nD1 < sq And nD1 > Avg1 Then     
        qs1 = nD1
    End If
Next


Output.Show(qs1 )