/// <summary> /// 计算 收益率 = (实际收益金额/投资金额)* 365 / (到期时间-开始时间) /// </summary> /// <param name="gains"></param> /// <param name="money"></param> /// <param name="endTime"></param> /// <param name="startTime"></param> /// <returns></returns> public static double CalculateYield(double gains, double money, DateTime endTime, DateTime startTime) { var gainsDivideMoney = gains / money; var dateTimeDifference = (endTime - startTime).TotalDays; CommUtils.Assert(dateTimeDifference != 0.0, "[开始时间]和[到期时间]相等,无法计算[实际收益率]"); var daysOfYear = 365; var yield = gainsDivideMoney * daysOfYear / dateTimeDifference; return(yield); }
private ExpressionOperator ParseOperator(char op) { if (op == '+') { return(ExpressionOperator.Add); } else if (op == '-') { return(ExpressionOperator.Subtract); } CommUtils.Assert(false, "ExpressionNode parse operator [" + op + "] failed."); return(ExpressionOperator.None); }
public static void Compress(string folder, MemoryStream ms) { CommUtils.Assert(Directory.Exists(folder), "Compress failed, can not find folder [" + folder + "] ."); ZipOutputStream zipStream = new ZipOutputStream(ms); zipStream.SetLevel(3); int folderOffset = folder.Length + (folder.EndsWith("\\") ? 0 : 1); CompressFolder(folder, zipStream, folderOffset); zipStream.Flush(); zipStream.Finish(); ms.Seek(0, SeekOrigin.Begin); }
public static void CheckAmortizationSchedule(DatasetLogicModel dataset, string asOfDate) { CommUtils.Assert(dataset != null && dataset.Instance != null, "查找模型失败asOfDate={0}", asOfDate); foreach (var asset in dataset.Assets) { if (asset.AmortizationType == AmortizationType.UserDefined) { var amortizationList = asset.Amortization.AmortizationRecords; if (amortizationList.Count > 0) { CommUtils.Assert(amortizationList.Any(x => x.Date >= asset.SecurityData.AsOfDate), "在AmortizationSchedule.csv中,找不到资产[{0}({1})]在asofDate={2}之后的偿付数据。", asset.SecurityData.SecurityName, asset.AssetId, asset.SecurityData.AsOfDate.ToString("yyyy-MM-dd")); } } } }
public static double ParseDouble(string content) { var isPercent = content.Contains("%"); if (isPercent) { content = content.Replace("%", string.Empty); } double value; if (!double.TryParse(content, out value)) { CommUtils.Assert(false, "解析浮点数失败:{0}", content); } return(isPercent ? value / 100.0 : value); }
public static IEnumerable <T> ParseTable <T>(List <List <object> > table, int projectId, Func <List <object>, int, int, T> parseRow) { var rows = new List <T>(); for (int i = 0; i < table.Count; i++) { try { rows.Add((T)parseRow(table[i], i, projectId)); } catch (Exception e) { CommUtils.Assert(false, "文件解析错误(行:" + (i + 1).ToString() + "):" + e.Message); } } return(rows); }
public static void CompressFiles(string folder, List <string> fileNames, MemoryStream ms) { CommUtils.Assert(Directory.Exists(folder), "Compress failed, can not find folder [" + folder + "] ."); ZipOutputStream zipStream = new ZipOutputStream(ms); zipStream.SetLevel(3); foreach (var file in fileNames) { var filePath = Path.Combine(folder, file); if (!File.Exists(filePath)) { continue; } FileInfo fileInfo = new FileInfo(filePath); string entryName = ZipEntry.CleanName(file); ZipEntry newEntry = new ZipEntry(entryName); newEntry.DateTime = fileInfo.LastWriteTime; newEntry.Size = fileInfo.Length; newEntry.IsUnicodeText = true; zipStream.PutNextEntry(newEntry); byte[] buffer = new byte[4096]; using (FileStream streamReader = File.OpenRead(filePath)) { StreamUtils.Copy(streamReader, zipStream, buffer); } zipStream.CloseEntry(); } zipStream.Flush(); zipStream.Finish(); ms.Seek(0, SeekOrigin.Begin); }
static public void Copy(string srcFilePath, string destFilePath, bool checkIsExist = true) { if (checkIsExist) { CommUtils.Assert(File.Exists(srcFilePath), "Can't find file [" + srcFilePath + "]"); } else { if (!File.Exists(srcFilePath)) { return; } } try { File.Copy(srcFilePath, destFilePath, true); } catch (Exception e) { CommUtils.Assert(false, "Copy [{0}] from [{1}] failed! Exception: {2}", destFilePath, srcFilePath, e.Message); } }
//解析可空日期 //日期:2016/07/25、2016-07-25、20160725、2016-7-25、2016/7/2 //空:"-"、""、" " public static DateTime?Parse(string date) { if (date == null || date.Trim() == "-" || string.IsNullOrWhiteSpace(date)) { return(null); } if (date.Contains('-') || date.Contains('/')) { DateTime dt; if (DateTime.TryParse(date, out dt)) { return(dt); } } else if (IsDigitDate(date)) { return(ParseDigitDate(date)); } CommUtils.Assert(false, "解析日期[{0}]失败", date); return(null); }
static public void CheckExtension(string filePathName) { var extension = Path.GetExtension(filePathName); CommUtils.Assert(!string.IsNullOrEmpty(extension), "文件[{0}]中不包含扩展名(文件类型)", filePathName); }