AnalyticalFormulaUtils.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using System;
  2. namespace JiaZhiQuan.Common.Utils
  3. {
  4. public class AnalyticalFormulaUtils
  5. {
  6. /// <summary>
  7. /// 计算增长率, 保留两位小数
  8. /// </summary>
  9. /// <param name="currentData"></param>
  10. /// <param name="previousData"></param>
  11. /// <returns></returns>
  12. public static string GrowthRate(decimal currentData, decimal previousData)
  13. {
  14. // 防止除以零
  15. if (previousData == 0)
  16. {
  17. return "-"; // 上一次数据为零,无法计算增长率
  18. }
  19. if(currentData == previousData)
  20. {
  21. return "0.00%";
  22. }
  23. decimal growthRate = ((currentData - previousData) / previousData) * 100;
  24. decimal roundedGrowthRate = Math.Round(growthRate, 2); // 四舍五入保留两位小数
  25. return roundedGrowthRate.ToString("0.00") + "%"; // 格式化为百分比字符串
  26. }
  27. /// <summary>
  28. /// 计算,公式:a / b
  29. /// </summary>
  30. /// <param name="count"></param>
  31. /// <param name="sumCount"></param>
  32. /// <returns></returns>
  33. public static string RateStr(int count, int sumCount)
  34. {
  35. // 防止除以零
  36. if (sumCount == 0)
  37. {
  38. return "-"; // 上一次数据为零,无法计算
  39. }
  40. decimal rate = (decimal)count / sumCount * 100;
  41. decimal roundedGrowthRate = Math.Round(rate, 2); // 四舍五入保留两位小数
  42. return roundedGrowthRate.ToString("0.00") + "%"; // 格式化为百分比字符串
  43. }
  44. /// <summary>
  45. /// 计算,公式:a / b
  46. /// </summary>
  47. /// <param name="count"></param>
  48. /// <param name="sumCount"></param>
  49. /// <returns></returns>
  50. public static string RateStr(decimal count, decimal sumCount)
  51. {
  52. // 防止除以零
  53. if (sumCount == 0)
  54. {
  55. return "-"; // 上一次数据为零,无法计算
  56. }
  57. decimal rate = count / sumCount * 100;
  58. decimal roundedGrowthRate = Math.Round(rate, 2); // 四舍五入保留两位小数
  59. return roundedGrowthRate.ToString("0.00") + "%"; // 格式化为百分比字符串
  60. }
  61. /// <summary>
  62. /// 计算,公式:a / b
  63. /// </summary>
  64. /// <param name="count"></param>
  65. /// <param name="sumCount"></param>
  66. /// <returns></returns>
  67. public static string Rate(int count, int sumCount)
  68. {
  69. // 防止除以零
  70. if (sumCount == 0)
  71. {
  72. return "-"; // 上一次数据为零,无法计算
  73. }
  74. decimal rate = (decimal)count / sumCount * 100;
  75. decimal roundedGrowthRate = Math.Round(rate, 2); // 四舍五入保留两位小数
  76. return roundedGrowthRate.ToString("0.00"); // 格式化为百分比字符串
  77. }
  78. /// <summary>
  79. /// 四舍五入保留两位小数,如果结果是整数,则加上两位小数,否则直接返回格式化后的字符串
  80. /// </summary>
  81. /// <param name="number"></param>
  82. /// <returns></returns>
  83. public static string FormatNumber(decimal number)
  84. {
  85. // 使用字符串格式化将数字四舍五入并保留两位小数
  86. string formattedNumber = string.Format("{0:0.00}", Math.Round(number, 2));
  87. // 如果结果是整数,则加上两位小数,否则直接返回格式化后的字符串
  88. if (formattedNumber.EndsWith(".00"))
  89. {
  90. formattedNumber = formattedNumber.Substring(0, formattedNumber.Length - 3);
  91. }
  92. return formattedNumber;
  93. }
  94. }
  95. }