<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ~~~ /* Package toolutilv4 提供了一組通用工具函數,用于常見的計算和處理操作。 函數目錄: - CalculateComparison: 計算環比/同比增長率 - CalculatePercentage: 計算百分比并保留指定位數 - GenerateOrderNo: 生成唯一訂單號 - NameDesensitization: 名稱脫敏 */ package toolutilv4 import ( "fmt" "github.com/shopspring/decimal" "math/rand" "strconv" "time" "unicode/utf8" ) // 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 } // 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 } // GenerateOrderNo 生成唯一訂單號 // 由于本方法僅使用了時間戳和一個大寫字母進行拼接,在高并發場景下可能會存在重復的情況。 // 如果需要更高的唯一性保證,可以考慮使用更復雜的算法或者引入分布式 ID 生成器等方案 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 名稱脫敏 // 對名稱進行脫敏處理,將名稱的首尾字符保留,其余字符替換為 '*' // 若名稱長度為2,只保留首字母;若名稱長度大于2,則首尾字符保留,其余字符替換為 '*' 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>

                              哎呀哎呀视频在线观看