<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ~~~ package toolutilv3 import ( "fmt" "github.com/shopspring/decimal" "math/rand" "strconv" "time" "unicode/utf8" ) /* CalculatePercentage 計算百分比并保留指定位數 CalculateComparison 計算環比/同比增長率 GenerateOrderNo 生成唯一訂單號 NameDesensitization 名稱脫敏 */ //備注 var ToolCommon = toolCommonUtil{} type toolCommonUtil struct{} // CalculatePercentage 計算百分比并保留指定位數 func (c *toolCommonUtil) CalculatePercentage(num float64, total float64, decimalPlaces int32) float64 { if total == 0 { return 0 } n := decimal.NewFromFloat(num) t := decimal.NewFromFloat(total) result, _ := n.Div(t).Mul(decimal.NewFromFloat(100)).Round(decimalPlaces).Float64() return result } /* 同比增長率=(本期數-同期數)/同期數×100% 環比增長率=(本期數-上期數)/上期數×100%。 */ // CalculateComparison 計算環比/同比增長率 func (c *toolCommonUtil) CalculateComparison(thisValue float64, lastValue float64, decimalPlaces int32) float64 { if lastValue == 0 { return 0 } now := decimal.NewFromFloat(thisValue) last := decimal.NewFromFloat(lastValue) result, _ := now.Sub(last).Div(last).Mul(decimal.NewFromInt(100)).Round(decimalPlaces).Float64() return result } /* 由于本方法僅僅使用了時間戳和一個大寫字母進行拼接,因此在高并發場景下可能會存在重復的情況。 如果需要更高的唯一性保證,可以考慮使用更復雜的算法或者引入分布式 ID 生成器等方案 */ // GenerateOrderNo 生成唯一訂單號 func (c *toolCommonUtil) GenerateOrderNo(prefix string) string { // 生成隨機數種子 rand.Seed(time.Now().UnixNano()) // 生成當前時間戳字符串 timestamp := strconv.FormatInt(time.Now().Unix(), 10) // 生成隨機數字符串(范圍在 0-25 之間) randomNum1 := rand.Intn(26) randomNum2 := rand.Intn(26) // 將隨機數轉換成對應的大寫字母 randomChar1 := string('A' + rune(randomNum1)) randomChar2 := string('A' + rune(randomNum2)) // 拼接出訂單號 return prefix + timestamp + randomChar1 + randomChar2 } // NameDesensitization 名稱脫敏 func (c *toolCommonUtil) NameDesensitization(name string) string { if utf8.RuneCountInString(name) == 2 { firstRune, _ := utf8.DecodeRuneInString(name) name = fmt.Sprintf("%c*", firstRune) } else if utf8.RuneCountInString(name) >= 2 { firstRune, _ := utf8.DecodeRuneInString(name) lastRune, _ := utf8.DecodeLastRuneInString(name) name = fmt.Sprintf("%c*%c", firstRune, lastRune) } return name } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看