diff options
author | m-stephen <truestyle2005@163.com> | 2019-11-01 10:27:03 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-01 10:27:03 +0800 |
commit | 9427c04bc709c39f7e083b6d1597aaf33af8c302 (patch) | |
tree | 224fa2bffbc6a81b447c76b98e4c13a51baadc29 /platform/default/src/mbgl/i18n/format_number.cpp | |
parent | fc2c02bbc6abaef52077fe5e9e78f772e6009967 (diff) | |
parent | 5b38cfee18800cbb3c6a3186882744592662c3d6 (diff) | |
download | qtlocation-mapboxgl-9427c04bc709c39f7e083b6d1597aaf33af8c302.tar.gz |
Merge branch 'master' into stephen-improve-accuracy-for-cameraupstream/stephen-improve-accuracy-for-camera
Diffstat (limited to 'platform/default/src/mbgl/i18n/format_number.cpp')
-rw-r--r-- | platform/default/src/mbgl/i18n/format_number.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/platform/default/src/mbgl/i18n/format_number.cpp b/platform/default/src/mbgl/i18n/format_number.cpp new file mode 100644 index 0000000000..7b6f24221d --- /dev/null +++ b/platform/default/src/mbgl/i18n/format_number.cpp @@ -0,0 +1,39 @@ +#include <mbgl/i18n/number_format.hpp> + +#include <unicode/numberformatter.h> + +namespace mbgl { +namespace platform { + +std::string formatNumber(double number, const std::string& localeId, const std::string& currency, + uint8_t minFractionDigits, uint8_t maxFractionDigits) { + + UErrorCode status = U_ZERO_ERROR; + icu::UnicodeString ustr; + std::string formatted; + + icu::Locale locale = icu::Locale(localeId.c_str()); + // Print the value as currency + if (!currency.empty()) { + icu::UnicodeString ucurrency = icu::UnicodeString::fromUTF8(currency); + ustr = icu::number::NumberFormatter::with() + .unit(icu::CurrencyUnit(ucurrency.getBuffer(), status)) + .locale(locale) + .formatDouble(number, status) + .toString(); + } else { + ustr = icu::number::NumberFormatter::with() +#if U_ICU_VERSION_MAJOR_NUM >= 62 + .precision(icu::number::Precision::minMaxFraction(minFractionDigits, maxFractionDigits)) +#else + .rounding(icu::number::Rounder::minMaxFraction(minFractionDigits, maxFractionDigits)) +#endif + .locale(locale) + .formatDouble(number, status) + .toString(); + } + return ustr.toUTF8String(formatted); +} + +} // namespace platform +} // namespace mbgl |