我想在 1 之后以 1000 分隔,但我得到了數字的分隔符 >=10000 我是怎么做的:
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.string(for: myNumber)
我得到了什么:
(lldb) po formatter.string(for: 1000)
? Optional<String>
- some : "1000"
(lldb) po formatter.string(for: 10000)
? Optional<String>
- some : "10 000"
為什么 1000 中沒有分隔符?
uj5u.com熱心網友回復:
聽起來 NumberFormatter 中的 pl_PL 語言環境可能存在錯誤。我建議將此問題報告給 Apple。您可以在 macOS 上使用反饋助手應用程式。
您可以在技術上實施變通方法,即對區域設定進行硬編碼或嘗試進行自己的格式設定,但對所有用戶強制使用特定格式通常不是好的做法。并且自己實作格式可能會成為邊緣情況的兔子洞,并且容易出錯。
uj5u.com熱心網友回復:
你問:
為什么 1000 中沒有分隔符?
對于使用空格作為分隔符的語言,當只有四位數字時省略四位數字的分組分隔符的這種模式并不少見。
正如數字分組的例外所說:
國際計量局規定“當小數點前后只有四位數字時,習慣上不使用空格來分隔一位數字”。
您將在多個使用空格作為分組分隔符的語言環境中看到這種模式。
此格式基于設備的設定(由您當前的 表示Locale)。您可以通過臨時更改您的設備設定來測驗以查看其他語言環境中的其他用戶的情況。
我建議不要讓您的代碼手動調整格式化程式的語言環境屬性以獲得所需的輸出:當然,可以出于診斷目的這樣做,但通常您不想更改格式化程式的語言環境(明顯的例外是您需要一些不變格式,例如,將結果存盤在持久存盤中或發送到服務器)。
始終使用設備的當前區域設定,以便您尊重最終用戶的數字格式設定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348889.html
