在Javascript中进行基于区域设置的货币格式化,你可以
(550.753).toLocaleString(undefined, {style: 'currency', currency: 'USD'})
// # $550.75 in en-US
你如何在Clojurescript中做同样的事情?
我已经尝试了
(.toLocaleString 550.753 nil {:style "currency" :currency "USD"})
无济于事。
答案 0 :(得分:3)
运行您的JS示例,我得到Uncaught TypeError: Cannot convert undefined or null to object(…)
,因为您将null
作为区域设置传递。 ClojureScript中也会发生同样的错误。 toLocaleString
要求您传递区域设置。
修复此问题以提供de-DE
区域设置:
JavaScript的:
(550.753).toLocaleString('de-DE', {style: 'currency', currency: 'EUR'})
// "550,75 €"
ClojureScript:
(.toLocaleString 550.753 "de-DE" #js {:style "currency" :currency "USD"})
;; "550,75 $"
#js
用于将ClojureScript地图转换为JavaScript对象。
如果您想改用默认语言环境,请传递#js []
或js/undefined
。
答案 1 :(得分:1)
由于 Clojurescript 广泛使用 Google Closure 库,您可以利用它的 i18n 货币格式功能
(import '[goog.i18n NumberFormat]
'[goog.i18n currency])
(let [fmt (NumberFormat. (.getLocalCurrencyPattern currency "USD"))]
(.format fmt 123.456)) ;; => "$123,46"