xref: /aosp_15_r20/external/cronet/base/i18n/number_formatting.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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