C#实现有效位数,科学计数法实现代码

C#实现有效位数,科学计数法实现代码C#科学计数法,有效位数代码///<summary>///有效数取值带科学计数法///</summary>///<paramname=”number”>浮点值</param>///<paramname=”GYouXiao”>有效位数</param>///<returns>结果</returns>

C#科学计数法,有效位数

在这里插入图片描述

代码

 /// <summary>
        /// 有效数取值带科学计数法
        /// </summary>
        /// <param name="number">浮点值</param>
        /// <param name="GYouXiao">有效位数</param>
        /// <returns>结果</returns>
        public string Significance(double number, int GYouXiao)
        { 
   
            var A1 = number.ToString("G" + GYouXiao.ToString());
            A1 = ScientificNotation(A1, GYouXiao);
            if (!A1.Contains("×10")&& A1.Length< GYouXiao) { 
   
                if (A1.Contains("."))
                { 
   
                    A1 = A1.PadRight(GYouXiao+1, '0');
                }
                else
                { 
   
                    A1 = A1 + ".";
                    A1 = A1.PadRight(GYouXiao+1, '0');
                }

            }
       
            return A1;
        }
        /// <summary>
        /// 转换科学计数法
        /// </summary>
        /// <param name="input">输入值</param>
        /// <param name="GYouXiao">有效位数</param>
        /// <returns>结果</returns>
        public static string ScientificNotation(string input,int GYouXiao)
        { 
   
            if (string.IsNullOrEmpty(input))
                return input;
            if (!input.ToLower().Contains("e"))
                return input;
            string[] strs = new string[] { 
    };
            if (input.Contains("E"))
                strs = input.Split('E');
            else if (input.Contains("e"))
                strs = input.Split('e');

            if (strs.Length != 2)
                return input;
            double value;
            if (!double.TryParse(strs[0], out value))
                return input;
            if (strs[1].Length < 2)
                return input;

            string result2 = strs[1].Replace("+", "").Replace("-", "");
            string[] result2Strs = result2.Split('\r');
            result2 = result2Strs[0];
            int value2;
            if (!int.TryParse(result2, out value2))
                return input;
            string uom = string.Empty;
            if (result2Strs.Length > 1)
                uom = "\r" + result2Strs[1];
            Dictionary<char, char> ht = new Dictionary<char, char>();
            ht.Add('+', '⁺');
            ht.Add('-', '⁻');
            ht.Add('0', '⁰');
            ht.Add('1', '¹');
            ht.Add('2', '²');
            ht.Add('3', '³');
            ht.Add('4', '⁴');
            ht.Add('5', '⁵');
            ht.Add('6', '⁶');
            ht.Add('7', '⁷');
            ht.Add('8', '⁸');
            ht.Add('9', '⁹');
            string result = strs[0];
            result2 = value2.ToString();
            bool isMinus = strs[1][0] == '-';
            string minus = "";
            if (isMinus)
                minus = "⁻";
            foreach (var kv in ht)
            { 
   
                result2 = result2.Replace(kv.Key, kv.Value);
            }
   
            return $"{result}×10{minus}{result2}{uom}";
        }

大致得思想就是通过一些特殊符号得替换来实现科学计数法。

今天的文章C#实现有效位数,科学计数法实现代码分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27889.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注