爱情 (1) 安装 (2) 北斗 (1) 毕业 (1) 变量 (1) 测绘局 (1) 测量 (2) 插件 (1) 查询 (1) 常用 (1) 成果转化 (1) 词汇 (1) 慈善 (1) 答辩 (2) 代码 (2) 电台 (1) 发泄 (1) 感悟 (4) 高程 (1) 搞笑 (5) 共产党 (1) 古诗词 (1) 管理 (1) 函数 (3) 绘图 (1) 加密 (1) 交际 (1) 教程 (4) 教育 (2) 解决 (4) 解密 (1) 精度 (1) 酒桌 (2) 开源 (2) 科技 (1) 科学 (1) 刻录 (1) 老外 (1) 励志 (5) 连续剧 (1) 恋爱 (1) 列表 (1) 领导 (1) 美食 (2) 名人 (3) 命令 (4) 区别 (1) 日记 (2) 软件 (12) 商业 (3) 时政 (1) 视频 (1) 数据 (1) 算法 (1) 投影 (2) 图论 (1) 网络 (1) 网站 (1) 卫星 (3) 未成年 (1) 慰问 (1) 文本 (1) 文件 (2) 下载 (4) 笑话 (2) 学习 (9) 遥感 (1) 疑问 (5) 营销 (1) 娱乐 (3) 源代码 (2) 政策 (1) 指导 (3) 智慧 (5) 主成分分析 (2) 抓图 (1) 专家 (1) 资料 (5) 字符串 (1) 最短路径 (1) 坐标 (1) baidu (3) Bernese (1) blog (2) c# (9) China (3) Dijkstra (1) DNS (1) doris (1) dos (1) excel (1) firefox (3) GAMIT (8) gcc (1) GIS (3) GMT (1) GPS (5) ITRF (1) linux (5) mapx (1) matlab (6) movie (4) music (3) oracle (2) pic (1) PPT (3) PROJ.4 (2) python (2) QQ (2) rinex (1) shell (2) sql (1) teqc (3) tools (1) tps (1) ubuntu (5) USA (1) website (1)

2010年12月23日星期四

测绘取位函数

 static public double GetNumber(double xIn,int decimalNumber)
        {
            //该函数主要实现数值的测绘进位问题
            //xIn:读入的数值
            //decimalNumber:保留的小数位数
            //返回值:双精度
            //by zzh_my@163.com
            //language c#
            //creat at 2010-12
            //last modify at 2010-12
            int a = decimalNumber;//保留的小数个数
            string xStr = xIn.ToString();
            string xStrOut = "";
            //获取xStr长度lAll,
            int lAll = xStr.Length;
            //(3)小数点位置lDot,
            int lDot = xStr.IndexOf(".");
            //未找到小数点则返回-1
            if (lDot > 0)
            {
                //1、则小数部分长度lLit=lAll-lDot
                int lLit = lAll - lDot - 1;
                //2、如果lLit=a,则原样输出
                if (lLit == a)
                {
                    xStrOut = xStr;
                }
                //3、如果lLit
                if (lLit < a)
                {
                    xStrOut = xStr.PadRight(lDot + a + 1, '0');
                }
                //4、如果lLit>a,则考虑
                if (lLit > a)
                {
                    //小数点后第a+1位 a_1Deal
                    int a_1Deal = lDot + a + 1;
                    //一、如果char[a_1Deal]>5,则char[lDot+a]+1;
                    if (Convert.ToInt16(xStr.Substring(a_1Deal, 1)) > 5)
                    {
                        xStrOut = xStr.Substring(0, lDot + a) + Convert.ToString(Convert.ToInt16(xStr.Substring(a_1Deal - 1, 1)) + 1);
                    }
                    //二、如果char[a_1Deal]<5,则截断xStr至小数点后a位
                    if (Convert.ToInt16(xStr.Substring(a_1Deal, 1)) < 5)
                    {
                        xStrOut = xStr.Substring(0, a_1Deal);
                    }
                    //三、如果char[a_1Deal]==5,则
                    if (Convert.ToInt16(xStr.Substring(a_1Deal, 1)) == 5)
                    {
                        //  //(一)、如果第小数后第a-1位,为偶数,则同 二
                        if (Convert.ToInt16(xStr.Substring(a_1Deal - 1, 1)) % 2 == 0)
                        {
                            xStrOut = xStr.Substring(0, a_1Deal);
                        }
                        // (二)、如果第小数后第a-1位,为奇数,则同 一
                        if (Convert.ToInt16(xStr.Substring(a_1Deal - 1, 1)) % 2 != 0)
                        {
                            xStrOut = xStr.Substring(0, lDot + a) + Convert.ToString(Convert.ToInt16(xStr.Substring(a_1Deal - 1, 1)) + 1);
                        }
                    }

                }
            }
            else
            {
                xStr = xStr + ".";
                xStrOut = xStr.PadRight(lAll + 1 + a, '0');
            }
            return Convert.ToDouble(xStrOut);
        }

1 条评论:

浏览统计