服务器端传一个double参数给PDA,PDA对这个参数*2或者/2发回服务器。
第一天测试好好的;第二天测试,这个参数*2或/2后突然就变成了“正无穷大”!于是我在*2或/2的下面messagebox了一下,发现是对的,传给服务器也还是正确的,但是只要不给它messagebox,就又变“正无穷大”了……
这是怎么回事呢?有没有人碰到过?

解决方案 »

  1.   

    换成int试试,截成string试试。:D
      

  2.   

    0.0.是DOUBLE型可能不太标准的,换成DECIMAL类型试试
      

  3.   

    PDA接收到的时候是string,转换成double的(因为此参数是小数,不能用int了:( )。
    Decimal我刚刚试了一下,因为很多其它地方也用到了这个参数,改了好多地方,刚刚出错了……还没仔细检查
    还有没有别的办法捏?
      

  4.   

    转成string 发给服务器,这最保险。:D
      

  5.   

    是转成string发给服务器的~~ 
      

  6.   

    string整。
    再大都不管了。
      

  7.   

    上代码~这样比较容易讲清楚
    解释:PDA执行地图放大操作,但它自己没有此功能,只是将地图比例尺传到服务器,服务器根据此比例尺发送放大后的地图给PDA 
    过程:PDA点击放大按钮后,PDA将 在mousedown时将服务器传来的scale*2再发回服务器string strMapOper = "";//要发送给服务器的字符串
    double scale=0;
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

        //...获得e的经纬度坐标(curX,curY)传给zoomin,作为中心点
        strMapOper = Zoomin(scale, curX, curY);//此scale是服务器发来的当前的scale
        MessageBox.Show(strMapOper);
    }
     private string Zoomin(double scale1, double centerX, double centerY)
    {
          double CurScale = scale1 * 2;
          string strsend = "Scale=" + CurScale.ToString() + "," + "CenterX=" + centerX.ToString() + "," + "CenterY=" + centerY.ToString();
          //MessageBox.Show(CurScale.ToString());//如果有这一句,scale是正确的
          return strsend;
    }
     public void sendmymsg()
    {
        //...与服务器连接等等
         string sendData=strMapOper;
        //如果上面不messagebox,在这里得到的strMapOper中的scale便成为“正无穷大”了
        //...send给服务器
    }
      

  8.   

    是不是其它地方的问题呢?
    只要不messagebox,到了发送的函数中就出错了……难道与发送有关?