簡體   English   中英

Swift NumberFormatter 僅適用於千

[英]Swift NumberFormatter just for thousand

我想在 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 中沒有分隔符?

聽起來 NumberFormatter 中的 pl_PL 語言環境可能存在錯誤。 我建議將此問題報告給 Apple。 您可以在 macOS 上使用反饋助手應用程序。

您可以在技術上實施變通方法,即對區域設置進行硬編碼或嘗試進行自己的格式設置,但對所有用戶強制使用特定格式通常不是好的做法。 並且自己實現格式可能會成為邊緣情況的兔子洞,並且容易出錯。

你問:

為什么 1000 中沒有分隔符?

對於使用空格作為分隔符的語言,當只有四位數字時省略四位數字的分組分隔符的這種模式並不少見。

正如數字分組的例外所說:

國際計量局規定“當小數點前后只有四位數字時,習慣上不使用空格來分隔一位數字”。

您將在多個使用空格作為分組分隔符的語言環境中看到這種模式。


此格式基於設備的設置(由您當前的Locale表示)。 您可以通過臨時更改您的設備設置來測試以查看其他語言環境中的其他用戶的情況。

我建議不要讓您的代碼手動調整格式化程序的語言環境屬性以獲得所需的輸出:當然,可以出於診斷目的這樣做,但通常您不想更改格式化程序的語言環境(明顯的例外是您需要一些不變格式,例如,將結果存儲在持久存儲中或發送到服務器)。

始終使用設備的當前區域設置,以便您尊重最終用戶的數字格式設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM