解决方案 »

  1.   

    for (int i = 1; i <= fileLen / 0x8000 - 1; i++)
                {
                    dotPoint = _getPoint(filepath, i);
                    foreach (PointF p in dotPoint)
                    {
                        if (_height <= p.Y)
                        {
                            _height = p.Y;
                        }
                    }
                    for (int j = 0; j < dotPoint.Count; j++)
                    {
                        currentPointF.X = (dotPoint[j].X) * (width - 1) / float.Parse(dotPoint.Count.ToString()) + 25;
                        currentPointF.Y = (dotPoint[j].Y) * (height - 1) / _height + 25;
                        listDrawPoints.Add(currentPointF);
                    }
                }i从1开始呢?
      

  2.   

    如果是数据的话,是不是可以换成decimal,精度高
      

  3.   

    报这个错
    加断点跟踪float.Parse(dotPoint.Count.ToString())和_height看看
      

  4.   

    在_changeToDrawPoints函数中加入以下调试代码,很有可能有除零或溢出的错误:
    for (int j = 0; j < dotPoint.Count; j++)
    {
        currentPointF.X = (dotPoint[j].X) * (width - 1) / float.Parse(dotPoint.Count.ToString()) + 25;
        currentPointF.Y = (dotPoint[j].Y) * (height - 1) / _height + 25;
        listDrawPoints.Add(currentPointF);    if (_height == 0) MessageBox.Show("divided by zero _height");    // <-- 调试
        if (float.IsNaN(currentPointF.X) || float.IsInfinity(currentPointF.X)) MessageBox.Show("X is wrong"); // <-- 调试
        if (float.IsNaN(currentPointF.Y) || float.IsInfinity(currentPointF.Y)) MessageBox.Show("Y is wrong"); // <-- 调试
    }
      

  5.   

    报这个错
    加断点跟踪float.Parse(dotPoint.Count.ToString())和_height看看
    打断点开了一下,_height显示的是0,0.3126757E+00得到的结果好像是0,_getPoint里该怎么改啊
      

  6.   

    _height确实是0,_getPoint函数该怎么改啊
      

  7.   

    确实是可以的,但是我怎么判断应该放大多少呢?在_getPoint函数里Point pot = new Point(br.ReadInt32(), br.ReadInt32() / 1000);像这组数据0.3126757E+00,我*1000就可以了;0.2537688E-04这组我得*1E+07
      

  8.   

    我的程序是先根据数据生成一个.wave文件,再生成的.png
    .wave文件的部分代码在这里,数据我是一行一行的写的,注释是我新加的,efac函数用来求数量级,好让它们放大或缩小,但我每次都算下数量级的话,一组(一列)数据的数量级可能就不一样了,问题是我怎么获得这一组(一列)数据的数量级?然后在每行写入的时候还能对应相应的数量级啊?String line = null;
                    int linenum = 0;                                                                                     //用于暂存 行号.
                    Dictionary<string, FileStream> fileStreamList = new Dictionary<string, FileStream>();                //文件流字典           
                    string[] filelist = File.ReadAllLines(Tools.PathJoin(TemplateFilepath, parafile), Encoding.UTF8);
                    do
                    {
                        try
                        {
                            line = filelist[linenum];                                                                    // 一次读取一行数据.
                        }
                        catch (System.Exception ex)
                        {
                        
                        }
                    if (linenum == 0)
                        {
                            LineHead = StringSplit(line);                                                                //遍历结果文件的头信息
                            string _head = "";
                            if (headflag)
                                headName = new StreamWriter(Tools.PathJoin(ModuleName, "HeadName.rinfo"), false, Encoding.UTF8);
                            for (int i = 1; i < LineHead.Count; i++)
                            {
                                FileStream fs = new FileStream(Tools.PathJoin(ModuleName, parafilename, LineHead[i] + ".wave"), FileMode.Create, FileAccess.Write);
                                if (headflag)
                                    _head += LineHead[i] + ",";
                                fileStreamList.Add(LineHead[i], fs);
                            }
                    if (headflag)
                            {
                                headName.Write(_head.Trim(','));
                                headflag = false;
                                headName.Close();
                            }
                        }
                    else
                        {
                            if (line != null)
                            {
                                List<string> datalist = StringSplit(line);
                                for (int i = 1; i < datalist.Count; i++)
                                {
                                    fileWrite = fileStreamList[LineHead[i]];
                                    bw = new BinaryWriter(fileWrite);
                                    bw.BaseStream.Seek(0, SeekOrigin.End);                                              //数据流指针移到最后    
                                    bw.Write((int)(float.Parse(datalist[0])));
                                    bw.Write((int)(float.Parse(datalist[i]) * 1000));
                                    //int e = efac(float.Parse(datalist[i]));
                                    //bw.Write((int)(float.Parse(datalist[i]) * (int)Math.Pow(10, 2 - e) * 1000));
                                }
                            }
                        }
                    linenum++;                                    
      

  9.   

    这些数据是用科学技术法表示的,这种表示法是0.xxxxxE+xx或0.xxxxxE-xx的形式,你可以在判断时先转为字符串,然后找到“E”,根据后面的+或-和数字就能知道是放大或缩小,以及倍数了
     也可以你的数据先放大或缩小,从小到大的倍数循环试,如先*10,再*100,*1000等,直到能正常运算(不抛异常了),
    也许高人有更好的处理方法,期待中.......
      

  10.   

    40分http://bbs.csdn.net/topics/390721952
    20分http://bbs.csdn.net/topics/390721857?page=1#post-396876680
    一共160分,求解决该问题