動態

詳情 返回 返回

Python/JS/Go/Java同步學習(第十六篇)四語言“字符串格式化(上)“對照表

🤝 免罵聲明:
  • 本文字符串格式化(上)操作經本蜀黎實戰整理,旨在提供快速參考指南📝
  • 因各語言版本迭代及不同系統環境差異,偶爾可能出現整理不全面之處,實屬正常✅
  • 歡迎理性交流補充,噴子勿噴——畢竟你行你上來寫,我敬你是條漢子,告訴我的你原文鏈接,我給你一鍵三連+轉發👍!
  • 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
    土味海報
⚠️【温馨提示·格式化界的"暗雷區"】

別看這兩篇格式化簡單——實則暗藏深坑,字母符號是記憶難點,用錯地方老闆電療,客户不開心!

💥 符號混淆警告(老闆電療高發區):
  • 💢 {:06d} vs {:6d} → 差個0,科目編碼從「000050」變「 50」,審計署暴怒!
  • 😱{:.2f} vs{:2f} → 差個點,金額從「628.00」變「62800」,財務小姐姐哭暈!
  • {:e} vs {:E} → 差個大小寫,科學計數從「3.14e+12」變「3.14E+12」,國際標準拒收!
🌍 本地化雷區(客户不開心之源):
  • 🌈德國用逗號當小數點 → 88888.67變成88888,67,歐洲客户掀桌!
  • 🎰土耳其İ詛咒 →toUpperCase()亂變點,跨國API崩潰!

-🔖 貨幣符號亂入 → ¥(人民幣)、¥(日元)、€(歐元)用錯,海外訂單全黃!

🔢 進制轉換玄學(系統崩潰導火索):

  • 💥二進制0b1100 vs 八進制034 vs 十六進制0x5A → 輸錯前綴直接系統爆炸!
  • 💫parseInt("011101",2)少寫參數 → JS默認當成八進制,庫存數量全亂!

🧘【虎山CTO·格式化急救包】

💊 符號記憶口訣(專治混淆):
  • 0是零,d是數,補零要用0撐住 → {:06d}
  • 點後f,小數位,沒有點就整崩潰 → {:.2f}
  • e科學,E大寫,國際規範要記對 → {:.2e} vs {:.2E}
🌐 本地化避坑口訣(專治客户不開心):
  • 💰歐美逗號分千位,德國逗號當小數點 → 永遠顯式指定Locale.US
  • 🧱土耳其İ有點,大寫i要小心 → 用Locale.ENGLISH鎖死!
⚡ 進制轉換口訣(專治系統爆炸):
  • 💎二binoct十六hex,前綴寫錯全報錯 → 0b、0、0x別手滑!
  • 🥨parseInt要進制,不寫進制八進制 → 永遠顯式寫基數!
📚 系列文章預告:
  • 近期內容將聚焦編程基礎構建,以「原創知識矩陣」形式系統梳理核心概念。每篇如連續劇集般環環相扣,建議按順序學習——知識點一鍋端,療效更持久!🔥

🧾【場景還原·小南的憑證格式化危機】

📉 小南(抓狂地揮舞憑證單):
  • 鳴人!審計署要求金額千分位日期標準化科目編碼補零,但供應商傳的JSON全是原始數字😱
  • 『628』要顯示為『628.00』,『50』要變成『000050』——雷影老闆説再搞不定就讓我們手寫全年憑證!📃
🦊 鳴人(結印搓出影分身):
  • 「師姐別慌!我這就用format()結印——等等...Java該怎麼用來着?!」💐
    (影分身砰砰消失)「卡卡西老師!雛田!救命啊——」😵
👁️ 卡卡西(雷切劈開亂碼):
  • 「嘖,又是格式化問題。printf如雷切狂暴輸出,String.format如寫輪眼精準控制——雛田,用白眼看看數據結構!」👀
🌸 雛田(柔拳點穴式修復):

🍜鳴人...請、請這樣用:

  • Python用format(),Java用printf,Go用fmt.Sprintf,JS用padStart+toFixed...🎨
    還、還有百分號格式化像點穴只動小數點...🎃

⚡ 雷影老闆(電光炸裂):

  • 「🌀三小時內不統一格式——你們就去給雲隱村寫一輩子數字格式化腳本!
🧘 【扎馬步·格式化心法】
  • {:06d} → 補零六位(科目編碼強迫症)🔢
  • {:.2f} → 小數點兩位(金額優雅西裝)👔
  • {:>8.3f} → 右對齊8位3小數(報表整齊術)📊
  • {:%} → 百分號化身(比例可視化)📈
  • padStart(6, '0') → JS補零術(前端仙法)💎
  • printf("%06d", 50) → Java咆哮補零(後端剛猛)💥
🧪【四語言實機結印·格式化對比】

1. Python(寫輪眼·一念格式化)

print("{:06d}".format(50))      # 000050
print("{:.2f}".format(628))     # 628.00
print("{:>8.3f}".format(628))   #  628.000

2. Java(柔拳·精準點穴)

System.out.printf("%06d", 50);       // 000050
System.out.printf("%.2f", 628.00);   // 628.00
System.out.printf("%8.3f", 628.00);  //  628.000

3. Go(雷切·暴力格式化)

fmt.Printf("%06d", 50)          // 000050
fmt.Printf("%.2f", 628.00)      // 628.00
fmt.Printf("%8.3f", 628.00)     //  628.000

4. JS(白眼·動態拼接)

console.log(String(50).padStart(6, '0'));    // 000050
console.log(628.00.toFixed(2));              // 628.00
console.log(String(628.00.toFixed(3)).padStart(8)); //  628.000

📊【四語言格式化戰力對比表】

語言 整數補零 小數控制 對齊操作 實戰指數
Python {:06d} {:.2f} {:>8} ⭐⭐⭐⭐⭐
Java printf("%06d") printf("%.2f") printf("%8.3f") ⭐⭐⭐⭐
Go fmt.Printf("%06d") fmt.Printf("%.2f") fmt.Printf("%8.3f") ⭐⭐⭐⭐
JS padStart(6,'0') toFixed(2) padStart(8) ⭐⭐⭐

格式化能力解析

  1. Pythonf-string 語法獨佔鰲頭(5星),格式控制最簡潔直觀🥇
  2. Java/Go 採用傳統 printf 風格(4星),類型安全但代碼稍顯冗長🥈
  3. JS 通過字符串方法實現(3星),功能完整但缺乏原生數值格式化支持🥉

核心操作對比

  • 整數補零:統一使用數字+填充格式(如 %06dpadStart)🚀
  • 小數控制:均支持精度設置(Python/Java/Go 更精確)📌
  • 對齊操作:Python 的右對齊 {:>8} 與 JS 的 padStart 各具特色🔁

實戰建議

  • 快速開發選 Python🥇
  • 企業級系統選 Java/Go🥈
  • 前端交互選 JS(需自行封裝複雜格式化邏輯)🥉
⚠️【避坑提示·格式化界的“十八反”】
  • 🚫 JS的toFixed()會四捨五入 → 財務要求截斷時爆雷!
  • ✅ 用Math.floor()預處理 → 防金額莫名膨脹💸
  • 💥 Java的printf默認本地化 → 德國用逗號當小數點!
// 危險做法
System.out.printf("%.2f", 628.00); // 在德國輸出 "628,00"
// 安全做法
System.out.printf(Locale.US, "%.2f", 628.00); // 永遠輸出 "628.00"

🌐 Python的format()支持千分位 → 但財務審計可能要求無逗號!

print("{:,.2f}".format(1234567.89))  # 1,234,567.89 → 審計署可能拒收!
🧪【實戰融合術·四語言憑證格式化】

Python(財務科目補零)

account_code = 50
print("{:06d}".format(account_code))  # 000050

Java(金額小數點控制)

double amount = 628.0;
System.out.printf("%.2f", amount);  // 628.00

Go(日期右對齊)

date := "2025-01-01"
fmt.Printf("%10s", date)  // "  2025-01-01"

JS(百分比可視化)

let ratio = 0.314;
console.log((ratio * 100).toFixed(2) + "%");  // 31.40%
以下是本蜀黎整理源碼和截圖⏬
1.Python源碼
# ==================== 財務格式化模塊 ====================
# 金額千分位格式化  # 給數字穿上西裝打領帶 👔
# 日期標準化輸出  # 時間必須西裝革履 ⏰
# 科目編碼補零  # 財務部的強迫症療法 🧮
# ⚠️ERP_冷溪虎山:格式錯誤會導致報表裸奔

print("{:6d}".format(50))
print("{:06d}".format(50))
print("{:*<6d}".format(50))
print("{:+>6d}".format(50))
print("{:6d}".format(50))
print("{:2d} +{:2d}={:3d}".format(50,8,58))
print("\n以下是浮點數🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔")

print("{:f}".format(628))
print("{:.2f}".format(628))
print("{:.1f}".format(3.14))
print("{:.6f}".format(3.14))
print("{:>8.3f}".format(628)) #保留3位小數,8位浮點數,右對齊
print("{:.2f}-{:.2f}={:.2f}".format(22.2325,10,12.2345))
print("\n以下是百分數🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖")

print("{:%}".format(0.314314))
print("{:.2%}".format(0.314314))
print("{:.6%}".format(0.314314))
print("{:.0%}".format(0.314314))
print("{:8.3%}".format(0.314314)) #保留3位小數,8位百分數,右對齊
print("結束☕☕☕☕☕☕☕☕☕☕☕☕")

Python

2.Nodejs源碼
// ==================== 中藥格式化模塊 ====================
// 藥方劑量標準化  // 君臣佐使排排坐 🧘
// 煎法時間格式化  // 文武火候計時器 ⏳
// 藥材編號補位  // 仙草也要身份證 🪪
// ⚠️虎山老藥師:格式不對影響成丹率

// 整數格式化
console.log(String(50).padStart(6));          // {:6d}
console.log(String(50).padStart(6, '0'));     // {:06d}
console.log(String(50).padStart(6, '*'));     // {*<6d} (左對齊)
console.log(String(50).padStart(6).replace(/./g, ' ').replace(/ $/, '').padEnd(6, '+')); // {:>+6d} (模擬右對齊)
console.log(String(50).padStart(6));          // {:6d}
console.log(`${String(50).padStart(2)} +${String(8).padStart(2)}=${String(58).padStart(3)}`); // {:2d} +{:2d}={:3d}
console.log("\n以下是浮點數 🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔");

// 浮點數格式化
console.log(628.00.toFixed(0));                  // {:f} (無小數)
console.log(628.00.toFixed(2));                  // {:.2f}
console.log(3.14.toFixed(1));                 // {:.1f}
console.log(3.14.toFixed(6));                 // {:.6f}
console.log(String(628.00.toFixed(3)).padStart(8)); // {:>8.3f} (右對齊)
console.log(`${22.2325.toFixed(2)}-${10.00.toFixed(2)}=${12.2345.toFixed(2)}`); // {:.2f}-{:.2f}={:.2f}
console.log("\n以下是百分數 🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖");

// 百分數格式化
console.log((0.314314 * 100).toFixed(0) + "%");       // {:%} (模擬)
console.log((0.314314 * 100).toFixed(2) + "%");       // {:.2%}
console.log((0.314314 * 100).toFixed(6) + "%");       // {:.6%}
console.log(Math.round(0.314314 * 100) + "%");        // {:.0%}
console.log(String((0.314314 * 100).toFixed(3)).padStart(8)); // {:8.3%} (右對齊)
console.log("結束 ☕☕☕☕☕☕☕☕☕☕☕☕");

nodejs

3.Go源碼
package main

import "fmt"

// ==================== 倉儲格式化模塊 ====================
// 貨號補全至12位  // 強迫症條形碼生成器 🏷️
// 物流單號標準化  // 給快遞發制服 🚛
// 庫存數量對齊  // 讓數字列隊報數 🪖
// ⚠️冷溪物流:格式混亂會導致貨架抑鬱

func main() {
    // 整數格式化
    fmt.Printf("%6d\n", 50)                 // {:6d}
    fmt.Printf("%06d\n", 50)                // {:06d}
    fmt.Printf("%-*d\n", 6, 50)             // {*<6d} (左對齊)
    fmt.Printf("%+6d\n", 50)                // {:>6d} (右對齊,但 Go 默認帶符號)
    fmt.Printf("%6d\n", 50)                 // {:6d}
    fmt.Printf("%2d +%2d=%3d\n", 50, 8, 58) // {:2d} +{:2d}={:3d}
    fmt.Println("\n以下是浮點數🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔")

    // 浮點數格式化
    fmt.Printf("%f\n", 628)                              // {:f}
    fmt.Printf("%.2f\n", 628)                            // {:.2f}
    fmt.Printf("%.1f\n", 3.14)                           // {:.1f}
    fmt.Printf("%.6f\n", 3.14)                           // {:.6f}
    fmt.Printf("%8.3f\n", 628)                           // {:>8.3f} (右對齊)
    fmt.Printf("%.2f-%.2f=%.2f\n", 22.2325, 10, 12.2345) // {:.2f}-{:.2f}={:.2f}
    fmt.Println("\n以下是百分數🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖")

    // 百分數格式化
    fmt.Printf("%.0f%%\n", 0.314314*100)  // {:%} (模擬)
    fmt.Printf("%.2f%%\n", 0.314314*100)  // {:.2%}
    fmt.Printf("%.6f%%\n", 0.314314*100)  // {:.6%}
    fmt.Printf("%.0f%%\n", 0.314314*100)  // {:.0%}
    fmt.Printf("%8.3f%%\n", 0.314314*100) // {:8.3%} (右對齊)
    fmt.Println("結束☕☕☕☕☕☕☕☕☕☕☕☕")
}

go

4.Java源碼
// ==================== ERP格式化模塊 ====================
// 單據編號補零  // 系統界的處女座 🌟
// 審批流步驟格式化  // 給流程穿職業裝 👔
// 日誌時間標準化  // 時間戳強迫症患者 ⏱️
// ⚠️ERP老兵_冷溪虎山:格式不規範會觸發系統潔癖

class main16 {
    public static void main(String[] args) {
        // 整數格式化
        System.out.printf("%6d%n", 50);          // {:6d}
        System.out.printf("%06d%n", 50);         // {:06d}
        System.out.printf("%-6d%n", 50);         // {*<6d} (左對齊,但 Java 沒有直接填充 *)
        System.out.printf("%+6d%n", 50);         // {:>6d} (右對齊,帶 + 號)
        System.out.printf("%6d%n", 50);          // {:6d}
        System.out.printf("%2d +%2d=%3d%n", 50, 8, 58); // {:2d} +{:2d}={:3d}
        System.out.println("\n以下是浮點數🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔🍔");

        // 浮點數格式化
        System.out.printf("%f%n", 628.00);          // {:f}
        System.out.printf("%.2f%n", 628.00);        // {:.2f}
        System.out.printf("%.1f%n", 3.14);       // {:.1f}
        System.out.printf("%.6f%n", 3.14);       // {:.6f}
        System.out.printf("%8.3f%n", 628.00);       // {:>8.3f} (右對齊)
        System.out.printf("%.2f-%.2f=%.2f%n", 22.2325, 10.00, 12.2345); // {:.2f}-{:.2f}={:.2f}
        System.out.println("\n以下是百分數🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖");

        // 百分數格式化
        System.out.printf("%.0f%%%n", 0.314314 * 100);       // {:%} (模擬)
        System.out.printf("%.2f%%%n", 0.314314 * 100);       // {:.2%}
        System.out.printf("%.6f%%%n", 0.314314 * 100);       // {:.6%}
        System.out.printf("%.0f%%%n", 0.314314 * 100);       // {:.0%}
        System.out.printf("%8.3f%%%n", 0.314314 * 100);      // {:8.3%} (右對齊)
        System.out.println("結束☕☕☕☕☕☕☕☕☕☕☕☕");
    }
}

Java

源碼分享結束⏫

📜【結局:格式統一·老闆驚歎】

⚡ 雷影老闆(看着整齊的報表目瞪口呆):
  • 🚀這格式...比我的雷遁還整齊!
  • 🍜年終獎加十噸《格式化忍法帖》+一樂拉麪終身VIP!
🌸 小南(憑證單化作千紙鶴飛散):
  • 「🍜鳴人!下次用{:>8.3f}給所有金額加『貴族間距』——讓審計署再也挑不出刺!」
🦊 鳴人(啃着拉麪嘟囔):
  • 「🙏其實...格式化就像煎藥——火候多了糊,少了生,剛剛好才是真忍術!」
🧾【虎山CTO的終極總結】
  • 補零 → 黃芪補氣,填精固表(強系統根基)🌱
  • 小數控制 → 甘草調和,百搭兼容(平衡數據陰陽)☯️
  • 對齊 → 君臣佐使,各守其位(報表如藥方有序)📜
**編程如用藥,切忌胡亂君臣——
該補零時用黃芪(padStart),該小數時用甘草(toFixed) 💊**

⚠️ 免責聲明(附因果律警告)

本代碼已注入中醫玄學能量,請謹慎使用:

  • ✅ 允許白嫖,但白嫖不點贊可能導致:

    • 下次面試官恰好問到這個算法
    • 鍵盤自動打出//這裏感謝冷溪虎山CTO
    • 奶茶精準灑在剛寫好的代碼上
  • ✅ 允許商用轉發,但商用不註明出處可能觸發:

    • 系統類型混亂自動轉型
    • 數據庫莫名存儲"君臣佐使"字段
  • ✅ 允許吐槽,但吐槽不帶改進建議可能引發:

    • 終生與老闆N連鞭相愛相殺

🚀 現在立即行動:

  1. 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
  2. 收藏 → 避免日後求醫無門
  3. 關注 → 接收更多「中醫+代碼」腦洞
  4. 評論區留言 → 領取你的專屬「算法藥方」

⚠️ 友情提示:

  • 本文內容過於硬核,建議點贊收藏轉發三連,避免小編心情波動導致文章神秘消失
  • 畢竟小編今天可能愛答不理,明天可能高攀不起——
  • 但你的收藏夾,永遠是你最穩的知識備份!

    🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步GitHub/公眾號/網盤!)
📖Python/JS/Go/Java四語言同步學習,跨語言系列上線(別在糾結學什麼單語言了)

🔍 沒看過前傳?快補課!
1-10篇請移步至"PY-JS-GO-JAVA基礎進階學習系列"合集中閲讀

  • Python/JS/Go/Java同步學習(第十五篇)四語言“字符串去重“對照表: 財務“小南“紙式去重術處理憑證內容崩潰(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第十四篇)四語言“字符串字母大小寫轉換“對照表: 財務“小南“紙式轉換術處理憑證內容崩潰(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第十三篇)四語言“字符串轉碼解碼“對照表: 財務“小南“紙式轉碼術處理憑證亂碼崩潰(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第十二篇)四語言“字符串填充編號“對照表: 財務“小南“紙式填充術加憑證編號崩潰(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第十一篇)四語言“字符串替換與填充“對照表: 雷影老闆下達清除“數據歪臉“指令(附源碼/截圖/參數表/避坑指南)
user avatar
0 用戶, 點贊了這篇動態!

發表 評論

Some HTML is okay.