private static void Main() { int num = Helpers.ValidateInputAsInt("How many numbers you would like to enter: "); List<double> numbers = new List<double>(); // Fill array with numbers for (int i = 0; i < num; i++) { numbers.Add(Helpers.ValidateInputAsDouble("Enter value " + (i + 1) + ": ")); } // Use of List methods Console.WriteLine("Minimal number is : {0}", numbers.Min()); Console.WriteLine("Maximal number is : {0}", numbers.Max()); Console.WriteLine("Sum number is : {0}", numbers.Sum()); Console.WriteLine("Average number is : {0}", numbers.Average()); }
/// <summary> /// 功能:显示用户电站地图 /// 描述:根据电站id获取电站的经度纬度 /// 作者:张月 /// 时间:2011年3月12日 16:38:08 /// </summary> /// <returns>电站id</returns> public ActionResult Map() { double[] point = { 1960, 980, 490, 245, 120, 60, 30, 15, 7.5, 3.7, 1.90 }; IList<Plant> plants = UserUtil.getCurUser().plants; IList<double> values = new List<double>(); if (plants.Count > 1) { for (int i = 1; i < plants.Count; i++) { values.Add(GetDistance(plants[0].latitude, plants[0].longitude, plants[i].latitude, plants[i].longitude)); } } double max = values.Count > 0 ? values.Max() : 0; ViewData["point"] = 2; for (int i = point.Length - 1; i >= 0; i--) { if (point[i] > max / 8) { ViewData["point"] = i; break; } } ViewData["plant"] = plants; return View(); }
public ReturnValueInfo UpdateRechargeRecord(List<RechargeRecord_rcr_Info> listRechargeRecords, decimal fPreCostRecharge) { ReturnValueInfo rvInfo = new ReturnValueInfo(); if (listRechargeRecords == null) { rvInfo.isError = true; rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull; return rvInfo; } if (listRechargeRecords != null && listRechargeRecords.Count < 1) { rvInfo.isError = true; rvInfo.messageText = "需要更新的充值记录不能为空。"; return rvInfo; } try { using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext()) { //用于批量统一插数 List<PreConsumeRecord_pcs> listToInsertPreCost = new List<PreConsumeRecord_pcs>(); List<CardUserAccountDetail_cuad> listToInsertAccountDetail = new List<CardUserAccountDetail_cuad>(); List<SystemAccountDetail_sad> listToInsertSysDetail = new List<SystemAccountDetail_sad>(); //获取账户信息 CardUserAccount_cua account = db.CardUserAccount_cua.Where(x => x.cua_cCUSID == listRechargeRecords[0].rcr_cUserID).FirstOrDefault(); #region 账户信息丢失时,自动创建账户信息 if (account == null) { account = new CardUserAccount_cua(); account.cua_cRecordID = Guid.NewGuid(); account.cua_cCUSID = listRechargeRecords[0].rcr_cUserID; account.cua_cAdd = listRechargeRecords[0].rcr_cLast; account.cua_dAddDate = DateTime.Now; account.cua_dLastSyncTime = DateTime.Now; account.cua_lIsActive = true; account.cua_fCurrentBalance = decimal.Zero; account.cua_fOriginalBalance = decimal.Zero; db.CardUserAccount_cua.InsertOnSubmit(account); db.SubmitChanges(); } #endregion //充值总额 decimal fSumRecharge = decimal.Zero; //待添加的的用户账户数据 List<CardUserAccountDetail_cuad> listUserAccountInfos = new List<CardUserAccountDetail_cuad>(); //待添加的系统账户数据 List<SystemAccountDetail_sad> listSysAccountInfos = new List<SystemAccountDetail_sad>(); //更新已经使用的转账充值记录 #region 更新已被充值的转账记录状态为已完成 foreach (RechargeRecord_rcr_Info rechargeItem in listRechargeRecords) { RechargeRecord_rcr record = db.RechargeRecord_rcr.Where(x => x.rcr_cRecordID == rechargeItem.rcr_cRecordID).FirstOrDefault(); if (record != null) { fSumRecharge += rechargeItem.rcr_fRechargeMoney; record.rcr_cLast = rechargeItem.rcr_cLast; record.rcr_cRechargeType = rechargeItem.rcr_cRechargeType; record.rcr_cStatus = rechargeItem.rcr_cStatus; record.rcr_cUserID = rechargeItem.rcr_cUserID; record.rcr_dLastDate = rechargeItem.rcr_dLastDate; record.rcr_dRechargeTime = rechargeItem.rcr_dRechargeTime; record.rcr_fBalance = rechargeItem.rcr_fBalance; record.rcr_fRechargeMoney = rechargeItem.rcr_fRechargeMoney; //用户账户 CardUserAccountDetail_cuad userAccount = new CardUserAccountDetail_cuad(); userAccount.cuad_cConsumeID = record.rcr_cRecordID; userAccount.cuad_cCUAID = account.cua_cRecordID; userAccount.cuad_cFlowType = record.rcr_cRechargeType; userAccount.cuad_cOpt = record.rcr_cLast; userAccount.cuad_cRecordID = Guid.NewGuid(); userAccount.cuad_dOptTime = DateTime.Now; userAccount.cuad_fFlowMoney = record.rcr_fRechargeMoney; listUserAccountInfos.Add(userAccount); //系统账户 SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad(); sysAccount.sad_cConsumeID = record.rcr_cRecordID; sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(record.rcr_cRechargeType); sysAccount.sad_cFLowMoney = record.rcr_fRechargeMoney; sysAccount.sad_cFlowType = record.rcr_cRechargeType; sysAccount.sad_cOpt = record.rcr_cLast; sysAccount.sad_cRecordID = Guid.NewGuid(); sysAccount.sad_dOptTime = DateTime.Now; listSysAccountInfos.Add(sysAccount); } } #endregion if (listUserAccountInfos.Count > 0) { //插入由充值记录产生的账户记录 listToInsertAccountDetail.AddRange(listUserAccountInfos); listToInsertSysDetail.AddRange(listSysAccountInfos); } //查找用户是否含有预充值记录 decimal fAdvance = decimal.Zero; #region 获取用户透支金额 List<RechargeRecord_rcr> listAdvance = db.RechargeRecord_rcr.Where(x => x.rcr_cUserID == listRechargeRecords[0].rcr_cUserID && x.rcr_cRechargeType == Common.DefineConstantValue.ConsumeMoneyFlowType.Recharge_AdvanceMoney.ToString() ).ToList(); if (listAdvance != null && listAdvance.Count > 0) { fAdvance = listAdvance.OrderByDescending(x => x.rcr_dRechargeTime).FirstOrDefault().rcr_fRechargeMoney; } #endregion decimal fCurrentBalance = decimal.Zero; //获取本次充值的最后卡余额 decimal fCardBalance = listRechargeRecords.Max(x => x.rcr_fBalance); if (Math.Abs(fPreCostRecharge) >= 0 && listRechargeRecords.Count > 0)//若存在需要支付预付款的金额,则进行平数处理 { //记录欠款总额 decimal fSumPreCost = decimal.Zero; //若预付款还款值大于0,则更新被支付的未结算预付款记录 #region 结算预付款项 List<PreConsumeRecord_pcs> listPreCost = db.PreConsumeRecord_pcs.Where(x => x.pcs_lIsSettled == false //需为未支付金额 && x.pcs_cAccountID == account.cua_cRecordID //需要账户对口 && x.pcs_cUserID == listRechargeRecords[0].rcr_cUserID //需要对口人员ID ).ToList(); //筛选预付款的消费类型 listPreCost = filterRecord_CanComputePreCost(listPreCost); fSumPreCost = listPreCost.Sum(x => x.pcs_fCost); if (Math.Abs(fPreCostRecharge) < Math.Abs(fSumPreCost)) { db.Transaction.Rollback(); db.Connection.Close(); rvInfo.messageText = "支付额不足以支付待结算的预付款。"; return rvInfo; } List<CardUserAccountDetail_cuad> listPreUserCost = new List<CardUserAccountDetail_cuad>(); List<SystemAccountDetail_sad> listPreSysIncome = new List<SystemAccountDetail_sad>(); foreach (PreConsumeRecord_pcs preItem in listPreCost) { preItem.pcs_lIsSettled = true; preItem.pcs_dSettleTime = DateTime.Now; //结算的同时插入一条用户账户支出记录 CardUserAccountDetail_cuad userAccount = new CardUserAccountDetail_cuad(); userAccount.cuad_cRecordID = Guid.NewGuid(); userAccount.cuad_cConsumeID = preItem.pcs_cRecordID; userAccount.cuad_cCUAID = account.cua_cRecordID; userAccount.cuad_cFlowType = preItem.pcs_cConsumeType; userAccount.cuad_cOpt = listRechargeRecords[0].rcr_cLast; userAccount.cuad_dOptTime = DateTime.Now; userAccount.cuad_fFlowMoney = preItem.pcs_fCost; listPreUserCost.Add(userAccount); //结算的同时插入一条系统账户收入记录 SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad(); sysAccount.sad_cRecordID = Guid.NewGuid(); sysAccount.sad_cConsumeID = preItem.pcs_cRecordID; sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(preItem.pcs_cConsumeType); sysAccount.sad_cFLowMoney = preItem.pcs_fCost; sysAccount.sad_cFlowType = preItem.pcs_cConsumeType; sysAccount.sad_cOpt = listRechargeRecords[0].rcr_cLast; sysAccount.sad_dOptTime = DateTime.Now; listPreSysIncome.Add(sysAccount); } if (listPreUserCost.Count > 0) { listToInsertAccountDetail.AddRange(listPreUserCost); listToInsertSysDetail.AddRange(listPreSysIncome); } #endregion //扣减透支额后的卡余额 fCardBalance -= fAdvance; //账户余额 decimal fAccountUpdate = account.cua_fCurrentBalance + fSumRecharge - fSumPreCost; if (fAccountUpdate > fCardBalance) { #region 平数处理 //【系统账户余额】 大于 【卡实际余额】 // 新增一条平数的预扣费记录 decimal fUnconfirmCost = fAccountUpdate - fCardBalance; PreConsumeRecord_pcs unconfirmRecord = new PreConsumeRecord_pcs(); unconfirmRecord.pcs_cAccountID = account.cua_cRecordID; unconfirmRecord.pcs_cAdd = listRechargeRecords[0].rcr_cLast; unconfirmRecord.pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.HedgeFund.ToString(); unconfirmRecord.pcs_cRecordID = Guid.NewGuid(); unconfirmRecord.pcs_cUserID = listRechargeRecords[0].rcr_cUserID; unconfirmRecord.pcs_dAddDate = DateTime.Now; unconfirmRecord.pcs_dConsumeDate = DateTime.Now; unconfirmRecord.pcs_fCost = fUnconfirmCost; unconfirmRecord.pcs_lIsSettled = false; listToInsertPreCost.Add(unconfirmRecord); //用户账户 CardUserAccountDetail_cuad userAccount = new CardUserAccountDetail_cuad(); userAccount.cuad_cConsumeID = unconfirmRecord.pcs_cRecordID; userAccount.cuad_cCUAID = account.cua_cRecordID; userAccount.cuad_cFlowType = unconfirmRecord.pcs_cConsumeType; userAccount.cuad_cOpt = listRechargeRecords[0].rcr_cLast; userAccount.cuad_cRecordID = Guid.NewGuid(); userAccount.cuad_dOptTime = DateTime.Now; userAccount.cuad_fFlowMoney = fUnconfirmCost; listToInsertAccountDetail.Add(userAccount); //系统账户 SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad(); sysAccount.sad_cConsumeID = unconfirmRecord.pcs_cRecordID; sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(unconfirmRecord.pcs_cConsumeType); sysAccount.sad_cFLowMoney = fUnconfirmCost; sysAccount.sad_cFlowType = unconfirmRecord.pcs_cConsumeType; sysAccount.sad_cOpt = listRechargeRecords[0].rcr_cLast; sysAccount.sad_cRecordID = Guid.NewGuid(); sysAccount.sad_dOptTime = DateTime.Now; listToInsertSysDetail.Add(sysAccount); #endregion } fCurrentBalance = fCardBalance; } else { fCurrentBalance = fCardBalance - fAdvance; } db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { account.cua_fCurrentBalance = fCurrentBalance; account.cua_dLastSyncTime = DateTime.Now; db.SubmitChanges(); db.Transaction.Commit(); rvInfo.boolValue = true; return rvInfo; } catch (Exception exx) { db.Transaction.Rollback(); db.Connection.Close(); throw exx; } } } catch (Exception ex) { rvInfo.isError = true; rvInfo.messageText = ex.Message; } return rvInfo; }
public double UpperBound() { int n = this.coefficients.Count-1; List<double> candidates = new List<double>(n){1}; for (int i = n; i > 0; i--) { candidates.Add(Math.Abs((coefficients[i] / coefficients[0]) * n)); } return candidates.Max(); }