1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_I18N_NUMBER_FORMATTING_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_I18N_NUMBER_FORMATTING_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <stdint.h> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include <string> 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker #include "base/i18n/base_i18n_export.h" 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker namespace base { 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker // Return a number formatted with separators in the user's locale. 17*6777b538SAndroid Build Coastguard Worker // Ex: FormatNumber(1234567) => "1,234,567" in English, "1.234.567" in German 18*6777b538SAndroid Build Coastguard Worker BASE_I18N_EXPORT std::u16string FormatNumber(int64_t number); 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker // Return a number formatted with separators in the user's locale, with 21*6777b538SAndroid Build Coastguard Worker // `fractional_digits` digits after the decimal point. 22*6777b538SAndroid Build Coastguard Worker // Ex: FormatDouble(1234567.8, 1) 23*6777b538SAndroid Build Coastguard Worker // => "1,234,567.8" in English, "1.234.567,8" in German 24*6777b538SAndroid Build Coastguard Worker BASE_I18N_EXPORT std::u16string FormatDouble(double number, 25*6777b538SAndroid Build Coastguard Worker int fractional_digits); 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker // Return a number formatted with separators in the user's locale, with up to 28*6777b538SAndroid Build Coastguard Worker // `max_fractional_digits` digits after the decimal point, and eliminating 29*6777b538SAndroid Build Coastguard Worker // trailing zeroes after `min_fractional_digits`. 30*6777b538SAndroid Build Coastguard Worker // Ex: FormatDouble(1234567.8, 0, 4) 31*6777b538SAndroid Build Coastguard Worker // => "1,234,567.8" in English, "1.234.567,8" in German 32*6777b538SAndroid Build Coastguard Worker // Ex: FormatDouble(1234567.888888, 0, 4) 33*6777b538SAndroid Build Coastguard Worker // => "1,234,567.8889" in English, "1.234.567,8889" in German 34*6777b538SAndroid Build Coastguard Worker BASE_I18N_EXPORT std::u16string FormatDouble(double number, 35*6777b538SAndroid Build Coastguard Worker int min_fractional_digits, 36*6777b538SAndroid Build Coastguard Worker int max_fractional_digits); 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker // Return a percentage formatted with space and symbol in the user's locale. 39*6777b538SAndroid Build Coastguard Worker // Ex: FormatPercent(12) => "12%" in English, "12 %" in Romanian 40*6777b538SAndroid Build Coastguard Worker BASE_I18N_EXPORT std::u16string FormatPercent(int number); 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker // Causes cached formatters to be discarded and recreated. Only useful for 43*6777b538SAndroid Build Coastguard Worker // testing. 44*6777b538SAndroid Build Coastguard Worker BASE_I18N_EXPORT void ResetFormattersForTesting(); 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker } // namespace base 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker #endif // BASE_I18N_NUMBER_FORMATTING_H_ 49