dim x as integer
dim y as double
dim n as integer
x=0do 
  y=100*sin(2*3.1415*50*x)
  for n=0 to 255   
      if clng(y+100)=clng(2*100*n/255)        '123
         exit for  
      end if
  next n
   ..........                                 '处理n
loop while x<=18000
先谈谈我的想法:
我将该正弦函数的振幅100*2后在分成255等分区间[0,1],[1,2]
[2,3][3,4]...[253,254][254,255],当y+100属于一个等份区间时,就记录该区间
的左端点值,比如,当y+100=3或y+100=3.3或y+100=3.9时都记录区间[3,4]的左端点值3.
当y+100=6,y+100=6.1,y+100=6.7时都记录区间[6,7]的左端点值6.
由于y是double类型,所以我就先将y+100取整了以后直接与各区间的左端点值比较,见
程序中的123句.
但是,我发现当y+100仅仅有100多时就益出了,请问就该程序是怎么回事????如果大家有其它方法实现我的想法,请赐教!小生不胜感激!!!!谢谢各位了!

解决方案 »

  1.   

    如果你把123语句换成 y+100!=2!*100!*n/255! 试过么?123语句少Then吧?
      

  2.   

    不对,得有CLng(),在CLng(2!*100!*n/255!)
      

  3.   

    把变量定义成长一点的
    如integer 变为 long
      

  4.   

    dim x
    dim y
    dim n
    不指定类型试试
      

  5.   

    >把变量定义成长一点的
    同意  frankwong(黄梓钿) 
    全部定义成Variant
    心里话:最好运用命名约定,这样使代码容易阅读和维护,而且不易出错。
      

  6.   

    首先谢谢楼上各位!to oasis0535(绿洲):如果你把123语句换成 y+100!=2!*100!*n/255! 那么将不会结束FOR循环,而我就是想通过结束FOR循环来得到N的值。
    to gcj123(佛的光辉):是123句益出。
    to frankwong:我定义的是LONG,还是要益出,而且通过其它方法,我得知益出时,(N=129
                  CLNG(Y+100)=128
      

  7.   

    这样就行:
    if clng(y+100)=clng(2&*100&*n\255&)
      

  8.   

    %整形
    &长整形
    @货币型
    !单精度浮点型
    #双精度浮点型
    $字符串
      

  9.   

    sorry,记错了类型符了 *^_^*