我想实现 这样一种功能。比如double vl = 123.2323我想通过什么方法可以使 vl值最后
得到  的结果    最高位升1  结果为 200
                最高位不变  结果为 100
后面位数都变成零

解决方案 »

  1.   

    55555555555555555555就是  一个double型 值,计算后只有最高位变化。其它位都变成0比如 double vl = 123.333(只是初始值)方法1 计算后 可得到结果 100.  (其实就是将初始值的 最高位保留,其它位取0)
    方法2 计算后 可得到结果 200.  (其实就是将初始值的 最高位加1,其它位取0)我想问 方法1  和方法2 如何实现。
      

  2.   

    double v1 = 123.2323;
    int  v2 = (Convert.ToInt32(v1 / 100) + 1) * 100;
    int  v3 = Convert.ToInt32(v1 / 100)*100;
      

  3.   

    double vl = 123.333;
    double r1 = ((int)v1/100)*100;
    double r2 = ((int)v1/100+1)*100;
      

  4.   

    using System;
    using System.Text.RegularExpressions;class Program
    {
      static void Main()
      {
        double vl = 29999.99999;
        Console.WriteLine(方法1(vl));
      }
      
      static double 方法1(double x)
      {
        return double.Parse(new Regex("(?!^).").Replace(((int)x).ToString(), "0"));
      }
    }
      

  5.   

    都有这习惯,初期,对.net框架不熟悉,总怕自己写的功能是系统提供的,最后代码质量和效率不高。这个出发点,问的话。还行。不过你描述的的确太模糊了。
      

  6.   

    直接return Convert.ToDouble((Convert.ToInt32(vl.ToString().SubString(0,1))+1).ToString()+v1.ToString().SubString(1,v1.ToString().Length)-1);
      

  7.   


    空军的,修改一点点,
    (?!^)\dusing System;
    using System.Text.RegularExpressions;class Program
    {
    static void Main()
    {
    double vl = 29999.99999;
    Console.WriteLine(方法1(vl));
    } static double 方法1(double x)
    {
    return double.Parse(new Regex(@"(?!^)\d").Replace(((int)x).ToString(), "0"));
    }
    }
      

  8.   

    using System;
    using System.Text.RegularExpressions;class Program
    {
      static void Main()
      {
        double vl = 34567.89;
        Console.WriteLine(方法1(vl));
        Console.WriteLine(方法2(vl));
      }
      
      static double 方法1(double x)
      {
        return double.Parse(new Regex("(?!^).").Replace(((int)x).ToString(), "0"));
      }
      
      static double 方法2(double x)
      {
        string s1 = Regex.Replace(((int)x).ToString(), "(?!^).", "0");
        string s2 = Regex.Replace(s1, "^.", "1");
        return double.Parse(s1) + double.Parse(s2);
      }
    }
      

  9.   

    来一个不用正则表达式的:
    using System;class Program
    {
      static void Main()
      {
        double vl = 234.56789;
        Console.WriteLine(方法1(vl));
      }
      
      static double 方法1(double x)
      {
        string s = ((int)x).ToString();
        return double.Parse(s[0] + new string('0', s.Length - 1));
      }
    }
      

  10.   

    这样就也能处理负数了:
    using System;
    using System.Text.RegularExpressions;class Program
    {
      static void Main()
      {
        double vl = 4567.89;
        Console.WriteLine(方法1(vl));
        Console.WriteLine(方法2(vl));    double v2 = -4567.89;
        Console.WriteLine(方法1(v2));
        Console.WriteLine(方法2(v2));
      }
      
      static double 方法1(double x)
      {
        return double.Parse(Regex.Replace(((int)x).ToString(), "(?<=\\d).", "0"));
      }
      
      static double 方法2(double x)
      {
        string s1 = Regex.Replace(((int)x).ToString(), "(?<=\\d).", "0");
        string s2 = Regex.Replace(s1, "^(-?).", "${1}1");
        return double.Parse(s1) + double.Parse(s2);
      }
    }
      

  11.   

    private static double toHigh(double value)
            {
                string valueString = value.ToString("E");
                return double.Parse(valueString.Substring(0, valueString.IndexOf('.')) + valueString.Substring(valueString.LastIndexOf('E')));
            }
      

  12.   

    91坛子是一个论坛浏览管理工具,支持在线浏览, 离线浏览, 帖子收藏, 搜索等功能.
    目前支持的论坛有天涯, 百度贴吧, 猫扑, Yahoo, csdn, 西祠胡同, 网龙的91论坛、VIP论坛及国内第一的科研论坛"小木虫".官方站点: http://rj.91.com/tanzi/ 看帖子就是方便,看过或预读的帖子,想什么时候看都可以,不怕原帖是否已被删除!
      

  13.   


    double func(double value)
    {
        int b=(double)value; //该循环取出valude的最高位为b; 
    int nCount=0;
     do{
     b=b/10; 
     nCount++;  
     }while(b>9);
     
     
    return ( b*pow(10,nCount) ) ;
    }
      

  14.   

    这样就可以处理负数
    double func(double value)
    {
        int b=(double)value; //该循环取出valude的最高位为b; 
    int nCount=0;
     do{
     b=b/10; 
     nCount++;  
     }while(abs(b)>9);
     
     
    return ( b*pow(10,nCount) ) ;