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