程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#實現將輸入的數自動轉換為科學計數法

C#實現將輸入的數自動轉換為科學計數法

編輯:C#入門知識

一朋友寫了一個把輸入的整型或浮點數轉換為科學計數法表示的算法,寫好後叫我去幫他看看有沒有什麼bug之類的沒有考慮周全。我還沒有細看就已經把我嚇到了----整整寫了將近三百行代碼。我也沒說他什麼,只是回到我的電腦前自己寫了一個試試。

 

需求:輸入一個數,用科學計數法表示,要有三位有效數字,冪數部分也要求是三位,不足則補零

 

代碼如下:

public abstract class ScienceCount
    {
        public static string KXJSF(double num)
        {
            double bef =System.Math.Abs(num);
            int aft=0;
            while (bef >= 10 ||(bef < 1&& bef!=0))
            {
                if (bef >= 10)
                {
                    bef = bef / 10;
                    aft++;
                }
                else
                {
                    bef = bef * 10;
                    aft--;
                }
            }
            return string.Concat(num>=0?"":"-",ReturnBef(bef),"E",ReturnAft(aft));
        }
        /// <summary>
        /// 有效數字的處理
        /// </summary>
        /// <param name="bef">有效數字</param>
        /// <returns>三位有效數字,不足則補零</returns>
        public static string ReturnBef(double bef)
        {
            if (bef.ToString() != null)
            {
                char[] arr = bef.ToString().ToCharArray();
                switch (arr.Length)
                {
                    case 1:
                    case 2: return string.Concat(arr[0] , "." , "00"); break;
                    case 3: return string.Concat(arr[0] + "." + arr[2] + "0"); break;
                    default: return string.Concat(arr[0] + "." + arr[2] + arr[3]); break;
                }
            }
            else
                return "000";
        }
        /// <summary>
        /// 冪的處理
        /// </summary>
        /// <param name="aft">冪數</param>
        /// <returns>三位冪數部分,不足則補零</returns>
        public static string ReturnAft(int aft)
        {
            if (aft.ToString() != null)
            {
                string end;
                char[] arr = System.Math.Abs(aft).ToString().ToCharArray();
                switch (arr.Length)
                {
                    case 1: end = "00" + arr[0]; break;
                    case 2: end = "0" + arr[0] + arr[1]; break;
                    default: end = System.Math.Abs(aft).ToString(); break;
                }
                return string.Concat(aft >= 0 ? "+" : "-" , end);
            }
            else
                return "+000";
        }
    }

 

調用代碼:

static void Main()
 {
            string num = "0";
            while (num != "#")
            {
                num = Console.ReadLine();
                if(!string.IsNullOrEmpty(num.Trim()))
                    Console.WriteLine(ScienceCount.KXJSF(double.Parse(num)));
            }

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved