【发布时间】:2019-06-02 20:54:48
【问题描述】:
我正在使用 React Native 开发一个应用程序,我需要以欧元和卢比显示货币。
我正在使用 Javascript 的 Intl 根据语言环境格式化货币,使用 en-IN 表示卢比,en-GB 表示欧元。
但货币在 iOS 和 android 上以不同的格式显示,在 iOS 中货币正确显示为 IN 像 3,74,73,474 但在 android 上以这种格式显示相同:37,473,474。不知道我该如何处理。下面是我为格式化编写的实用函数:
getformattedCurrency(value) {
const formatter = new Intl.NumberFormat('en-IN', {
style: 'currency',
currency: 'INR'
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
return formatter.format(value);
}
我知道android的原生有DecimalFormat可以做到这一点,但我只想通过JS来实现。
任何帮助表示赞赏!谢谢。
【问题讨论】:
-
您能否提供一个您尝试转换的示例数字和您获得的结果,那些### 没有提供足够的结果信息。您也可以在没有最小和最大小数位数参数的情况下尝试它。如果您想要四舍五入的数字,您可以在转换之前进行数学运算。
-
@maximelian1986 我已经编辑了问题以提供真实数据。请看一下。
-
你调试了吗?您是否从该方法获得不同的值,或者您在应用程序 ui 上看到不同的值?可能是该方法以那种奇怪的形式呈现结果编号之后的东西?你的初始号码是 37473.474 吗?
-
是的,我已经调试过了,然后才得出结论,该方法返回不同的值,初始数字是
37473474而不是37473.474 -
我仍在测试,但现在我注意到您有错字,您在 minimumFractionDigits 参数之前缺少逗号...如果您在此处复制/粘贴它,可能也在您的代码中。
标签: javascript android react-native locale currency-formatting