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

算法--區間數據計算

編輯:C#入門知識

最近一年多來,一直比較忙,最近一段時間終於空閒了,把以前沒寫的都補上.....

這邊隨筆主要是計算一系列數據的間隔數據。從一堆數據中查詢出每個區間的起始數據,結束數據以及數據個數,同時可以設置相應精度(小數位數)。

區間數據數據結構

 1、區間數據主要包括當前區間的起始數據,結束數據以及數據個數。結構如下:

    public struct IntervalData<TKey, TValue>
    {
        private TKey _startValue;
        private TKey _endValue;
        private TValue _count;

        public IntervalData(TKey startValue, TKey endValue, TValue count)
        {
            this._startValue = startValue;
            this._endValue = endValue;
            this._count = count;
        }

        public TKey StartValue
        {
            get { return this._startValue; }
            set { this._startValue = value; }
        }

        public TKey EndValue
        {
            get { return this._endValue; }
            set { this._endValue = value; }
        }

        public TValue Count
        {
            get { return this._count; }
            set { this._count = value; }
        }
    }

區間數據計算算法

 首先需要注意的幾點如下:

1、區間應該大於等於1,精度必須小於等於15(double精度最大值)。

2、區間寬度需要微調,相應需要增加相對應的精度值。

3、最大值和最小值需要微調,相應需要增加或者減少相對應的精度值。

       IntervalCount { ;   IntervalWidth { ;    MaxValue { ;   MinValue { ;     MAX_DIGIT_SCALE =  DataCalculator( (intervalCount <= .IntervalCount = .IntervalCount = 
         
         
         
         
         IList<IntervalData<, >> Calculate(IList<> values,  digits =  (values ==  || values.Count ==   List<IntervalData<, >> IList<IntervalData<, >> CalculateResult(IEnumerable<> values,  dataResult =  List<IntervalData<, >> startValue =  ( index = ; index < .IntervalCount; index++ count =  endValue = Math.Round(startValue +  ( currValue  (currValue >= startValue &&<++ (index == .IntervalCount -  && .MaxValue <.MaxValue = IntervalData<, >=  AdjustIntervalWidth( intervalWidth = (.MaxValue - .MinValue) /  currentIntervalWidth = (currentIntervalWidth <+=  / Math.Pow( (currentIntervalWidth == = .IntervalWidth =  AdjustMinAndMaxValue(IEnumerable<> values,  minValue = maxValue =
             currentMinValue = (currentMinValue >-=  / Math.Pow(
             currentMaxValue = (currentMaxValue <=+=  / Math.Pow(.MinValue =.MaxValue =   CheckDoubleScale(  (digits < =  (digits >=

具體應用

應用比較簡單,示例如下:

            IList<> dataPoints =  List<>() { -, , , , ,  calculator =  DataCalculator(<IntervalData<, >> datas = calculator.Calculate(dataPoints, =  ( data .Format( result =

輸出結果為:

StartValue:-4  EndValue:16.71  Count:4
StartValue:16.71  EndValue:37.42  Count:0
StartValue:37.42  EndValue:58.13  Count:0
StartValue:58.13  EndValue:78.84  Count:1
StartValue:78.84  EndValue:99.55  Count:1

可以將該返回數據用於相關圖形進行綁定以及顯示。

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