Clojurescript 中的货币格式
Currency formatting in Clojurescript
在Javascript中,要对货币进行基于区域设置的格式化,您需要
(550.753).toLocaleString(undefined, {style: 'currency', currency: 'USD'})
// # 0.75 in en-US
你如何在 Clojurescript 中做同样的事情?
我试过了
(.toLocaleString 550.753 nil {:style "currency" :currency "USD"})
无果。
运行 你的 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
。
由于 Clojurescript 广泛使用 Google 闭包库,您可以利用它的 i18n 货币格式化函数
(import '[goog.i18n NumberFormat]
'[goog.i18n currency])
(let [fmt (NumberFormat. (.getLocalCurrencyPattern currency "USD"))]
(.format fmt 123.456)) ;; => "3,46"
在Javascript中,要对货币进行基于区域设置的格式化,您需要
(550.753).toLocaleString(undefined, {style: 'currency', currency: 'USD'})
// # 0.75 in en-US
你如何在 Clojurescript 中做同样的事情?
我试过了
(.toLocaleString 550.753 nil {:style "currency" :currency "USD"})
无果。
运行 你的 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
。
由于 Clojurescript 广泛使用 Google 闭包库,您可以利用它的 i18n 货币格式化函数
(import '[goog.i18n NumberFormat]
'[goog.i18n currency])
(let [fmt (NumberFormat. (.getLocalCurrencyPattern currency "USD"))]
(.format fmt 123.456)) ;; => "3,46"