private bool CountSingeTimes(ConfigurationStatus.TimesCount pTimesInfo, ref List <ConfigurationStatus.TimesData> pTimesList, int pIndex, double pTimes) { ConfigurationStatus.TimesData item = new ConfigurationStatus.TimesData { Expect = pIndex.ToString(), Output = CommFunc.ChinaRound((pTimesInfo.Money * pTimesInfo.Number) * pTimes, 2) }; item.TotalOutput = pTimesInfo.TotalOutput + item.Output; item.Times = pTimes; item.Input = CommFunc.ChinaRound(pTimesInfo.Mode * pTimes, 2); item.Gain = CommFunc.ChinaRound(item.Input - item.TotalOutput, 2); item.GainRatio = CommFunc.ChinaRound((item.Gain / item.TotalOutput) * 100.0, 2); item.TBCycle = pTimesInfo.TBCycle; pTimesList.Add(item); for (int i = 2; i <= item.TBCycle; i++) { this.CountTBList(pTimesInfo, i, ref pTimesList); } ConfigurationStatus.TimesData data2 = pTimesList[pTimesList.Count - 1]; double getTBGain = -1.0; if ((pTimesInfo.Type == ConfigurationStatus.TimesType.GainFix) || (pTimesInfo.Type == ConfigurationStatus.TimesType.Sum)) { getTBGain = pTimesInfo.GetTBGain; return(data2.Gain >= getTBGain); } if (pTimesInfo.Type == ConfigurationStatus.TimesType.GainRatio) { getTBGain = pTimesInfo.GetTBGain; return(data2.GainRatio >= getTBGain); } return(false); }
private double CountSingeTimes(ConfigurationStatus.TimesCount pTimesInfo, ref List <ConfigurationStatus.TimesData> pTimesList, int pIndex) { double pNum = -1.0; double getTBGain = -1.0; if ((pTimesInfo.Type == ConfigurationStatus.TimesType.GainFix) || (pTimesInfo.Type == ConfigurationStatus.TimesType.Sum)) { getTBGain = pTimesInfo.GetTBGain; } else if (pTimesInfo.Type == ConfigurationStatus.TimesType.GainRatio) { getTBGain = pTimesInfo.GetTBGain / 100.0; } double x = pTimesInfo.Money * pTimesInfo.Number; double num4 = (getTBGain + pTimesInfo.TotalOutput) * Math.Pow(x, (double)(pTimesInfo.TBCycle - 1)); double num5 = Math.Pow(pTimesInfo.Mode, (double)pTimesInfo.TBCycle) - Math.Pow(x, (double)pTimesInfo.TBCycle); if (pTimesInfo.Type == ConfigurationStatus.TimesType.GainRatio) { num4 = ((getTBGain + 1.0) * pTimesInfo.TotalOutput) * Math.Pow(x, (double)(pTimesInfo.TBCycle - 1)); num5 = (Math.Pow(pTimesInfo.Mode, (double)pTimesInfo.TBCycle) - Math.Pow(x, (double)pTimesInfo.TBCycle)) - Math.Pow(x, (double)pTimesInfo.TBCycle); } pNum = num4 / num5; pNum = CommFunc.ChinaRound(pNum, 2); if (pNum < 0.0) { return(-1.0); } if (pNum > 10000000.0) { return(-1.0); } if (pNum < pTimesInfo.Start) { pNum = pTimesInfo.Start; } while (!this.CountSingeTimes(pTimesInfo, ref pTimesList, pIndex, pNum)) { pNum += 0.01; pNum = CommFunc.ChinaRound(pNum, 2); for (int i = 0; i < pTimesInfo.TBCycle; i++) { pTimesList.RemoveAt(pTimesList.Count - 1); } } ConfigurationStatus.TimesData data = pTimesList[pTimesList.Count - 1]; pTimesInfo.TotalOutput = data.TotalOutput; if (pTimesInfo.Type == ConfigurationStatus.TimesType.Sum) { pTimesInfo.SumBegin = data.Gain; } return(pNum); }
private void CountTBList(ConfigurationStatus.TimesCount pTimesInfo, int pIndex, ref List <ConfigurationStatus.TimesData> pTimesList) { ConfigurationStatus.TimesData item = new ConfigurationStatus.TimesData { Expect = "", Output = pTimesList[pTimesList.Count - 1].Input }; double num = CommFunc.ChinaRound(item.Output / (pTimesInfo.Money * pTimesInfo.Number), 2); item.TotalOutput = pTimesList[pTimesList.Count - 1].TotalOutput; item.Times = num; item.Input = CommFunc.ChinaRound(pTimesInfo.Mode * num, 2); item.Gain = CommFunc.ChinaRound(item.Input - item.TotalOutput, 2); item.GainRatio = CommFunc.ChinaRound((item.Gain / item.TotalOutput) * 100.0, 2); item.TBCycle = pTimesInfo.TBCycle; pTimesList.Add(item); }