在数据库里读出了3个考生信息A,B,C。他们的排列是ABC,我要将C考生插入A,B考生的中间,A,B,C考生每个考生都有相对应的ID(double)。算法是(A的ID+B的ID)/2得到一个新的ID,把新的ID赋予C。现在有几个要求,当A,B的ID长度达到double类型的最大长度的时候,提示不能插入,当A的ID长度小于B的ID长度,计算出的C的ID长度要求只能比A的ID长度多一位。反之当B的ID长度小于A的ID长度的时候,计算出的C的ID长度要求只能比B的ID长度多一位。就是这个条件判断如何在C#中用代码实现,请教各位高手。

解决方案 »

  1.   

    这个实现起来应该不难的!首先你要知道double的最大长度是多少!!我不知道double的最大长度是多少……;
    double lenA;
    double lenB;
    double lenC;
    A和B的id是可以得到的!那么现在就要来计算C的id了;
    if(lenA的长度>double的最大长度||lenB的长度>double的最大长度)
    {
        messagebox.show("提示不能插入");
    }else if(lenA的长度<lenB的长度)
    {
      …………
    }else if(lenB的长度<lenA的长度)
    {
      …………
    }
    我认为大体上是这样的
      

  2.   

    这样的条件你那算法(A的ID+B的ID)/2根本就不成立的
      

  3.   

    double类型的最大长度?= double类型的maxvalue
    考生信息的Id用double类型?
    对楼主的描述跟需求很费解
    这个问题还有很严重的逻辑错误,如果A和B的值是确定的,那C的值就有可能是不符合你那个比长度最长的多一位的条件,问题在于,当不符合条件了怎么处理,因为A和B的ID决定C的ID。按我对楼主的理解,给你个参考public class _ABC
    {
        public double Id = 0.00;    public int Len 
        {
            get
            {
                return ((int)Id).ToString().Length;
            }
        }
    }public class _Exec
    {
        public void test()
        {
            _ABC a = new _ABC();
            a.Id = 0.00; //a的id        _ABC b = new _ABC();
            b.Id = 0.00; //b的id;        _ABC c = new _ABC();
            int clen = 0;        if (a.Id == Double.MaxValue || b.Id = Double.MaxValue)
            {
                Console.WriteLine("不能插入");
            }
            else
            {
                c.Id = (a.Id + b.Id) / 2; //c的id            if (a.Len > b.Len)
                {
                    //怎么处理?
                }
                else
                {
                    //怎么处理?
                }
            }
        }
    }
      

  4.   

    算法是(A的ID+B的ID)/2得到一个新的ID,把新的ID赋予C。反之当B的ID长度小于A的ID长度的时候,计算出的C的ID长度要求只能比B的ID长度多一位。就是这个条件判断如何在C#中用代码实现,请教各位高手。这哪儿是绕啊,根本就是矛盾。
    上面两个条件就是有冲突的。既然有固定算法,既然A和B的Id已经确定,你怎么能保证C能符合条件呢?
    纠节啊...