Compounds | |||
![]() | ![]() | struct | UNumberFormatSymbols |
Defines | |||
![]() | ![]() | #define | UNFSYMBOLSMAXSIZE |
Typedefs | |||
![]() | ![]() | typedef void* | UNumberFormat |
![]() | ![]() | A number formatter. More... | |
![]() | ![]() | typedef enum UNumberFormatStyle | UNumberFormatStyle |
![]() | ![]() | typedef enum UNumberFormatRoundingMode | UNumberFormatRoundingMode |
![]() | ![]() | typedef enum UNumberFormatPadPosition | UNumberFormatPadPosition |
![]() | ![]() | typedef enum UNumberFormatAttribute | UNumberFormatAttribute |
![]() | ![]() | typedef enum UNumberFormatTextAttribute | UNumberFormatTextAttribute |
![]() | ![]() | typedef struct UNumberFormatSymbols | UNumberFormatSymbols |
Enumerations | |||
![]() | ![]() | enum | UNumberFormatStyle { UNUM_DECIMAL, UNUM_CURRENCY, UNUM_PERCENT, UNUM_SPELLOUT, UNUM_DEFAULT } |
![]() | ![]() | The possible number format styles. More... | |
![]() | ![]() | enum | UNumberFormatRoundingMode { UNUM_ROUND_CEILING, UNUM_ROUND_FLOOR, UNUM_ROUND_DOWN, UNUM_ROUND_UP, UNUM_FOUND_HALFEVEN, UNUM_ROUND_HALFDOWN, UNUM_ROUND_HALFUP } |
![]() | ![]() | enum | UNumberFormatPadPosition { UNUM_PAD_BEFORE_PREFIX, UNUM_PAD_AFTER_PREFIX, UNUM_PAD_BEFORE_SUFFIX, UNUM_PAD_AFTER_SUFFIX } |
![]() | ![]() | enum | UNumberFormatAttribute { UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED, UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS, UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_ROUNDING_INCREMENT, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION } |
![]() | ![]() | The possible UNumberFormat numeric attributes. More... | |
![]() | ![]() | enum | UNumberFormatTextAttribute { UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX, UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX, UNUM_PADDING_CHARACTER } |
![]() | ![]() | The possible UNumberFormat text attributes. More... | |
Functions | |||
![]() | ![]() | U_CAPI UNumberFormat* | unum_open (UNumberFormatStyle style, const char* locale, UErrorCode* status) |
![]() | ![]() | Open a new UNumberFormat for formatting and parsing numbers. More... | |
![]() | ![]() | U_CAPI UNumberFormat* | unum_openPattern ( const UChar* pattern, int32_t patternLength, const char* locale, UErrorCode* status) |
![]() | ![]() | Open a new UNumberFormat for formatting and parsing numbers. More... | |
![]() | ![]() | U_CAPI void | unum_close (UNumberFormat* fmt) |
![]() | ![]() | Close a UNumberFormat. More... | |
![]() | ![]() | U_CAPI UNumberFormat* | unum_clone (const UNumberFormat *fmt, UErrorCode *status) |
![]() | ![]() | Open a copy of a UNumberFormat. More... | |
![]() | ![]() | U_CAPI int32_t | unum_format ( const UNumberFormat* fmt, int32_t number, UChar* result, int32_t resultLength, UFieldPosition *pos, UErrorCode* status) |
![]() | ![]() | Format an integer using a UNumberFormat. More... | |
![]() | ![]() | U_CAPI int32_t | unum_formatDouble ( const UNumberFormat* fmt, double number, UChar* result, int32_t resultLength, UFieldPosition *pos, UErrorCode* status) |
![]() | ![]() | Format a double using a UNumberFormat. More... | |
![]() | ![]() | U_CAPI int32_t | unum_parse ( const UNumberFormat* fmt, const UChar* text, int32_t textLength, int32_t *parsePos , UErrorCode *status) |
![]() | ![]() | Parse a string into an integer using a UNumberFormat. More... | |
![]() | ![]() | U_CAPI double | unum_parseDouble ( const UNumberFormat* fmt, const UChar* text, int32_t textLength, int32_t *parsePos , UErrorCode *status) |
![]() | ![]() | Parse a string into a double using a UNumberFormat. More... | |
![]() | ![]() | U_CAPI const char* | unum_getAvailable (int32_t index) |
![]() | ![]() | Get a locale for which number formatting patterns are available. More... | |
![]() | ![]() | U_CAPI int32_t | unum_countAvailable (void) |
![]() | ![]() | Determine how many locales have number formatting patterns available. More... | |
![]() | ![]() | U_CAPI int32_t | unum_getAttribute (const UNumberFormat* fmt, UNumberFormatAttribute attr) |
![]() | ![]() | Get a numeric attribute associated with a UNumberFormat. More... | |
![]() | ![]() | U_CAPI void | unum_setAttribute ( UNumberFormat* fmt, UNumberFormatAttribute attr, int32_t newValue) |
![]() | ![]() | Set a numeric attribute associated with a UNumberFormat. More... | |
![]() | ![]() | U_CAPI double | unum_getDoubleAttribute (const UNumberFormat* fmt, UNumberFormatAttribute attr) |
![]() | ![]() | Get a numeric attribute associated with a UNumberFormat. More... | |
![]() | ![]() | U_CAPI void | unum_setDoubleAttribute ( UNumberFormat* fmt, UNumberFormatAttribute attr, double newValue) |
![]() | ![]() | Set a numeric attribute associated with a UNumberFormat. More... | |
![]() | ![]() | U_CAPI int32_t | unum_getTextAttribute ( const UNumberFormat* fmt, UNumberFormatTextAttribute tag, UChar* result, int32_t resultLength, UErrorCode* status) |
![]() | ![]() | Get a text attribute associated with a UNumberFormat. More... | |
![]() | ![]() | U_CAPI void | unum_setTextAttribute ( UNumberFormat* fmt, UNumberFormatTextAttribute tag, const UChar* newValue, int32_t newValueLength, UErrorCode *status) |
![]() | ![]() | Set a text attribute associated with a UNumberFormat. More... | |
![]() | ![]() | U_CAPI int32_t | unum_toPattern ( const UNumberFormat* fmt, bool_t isPatternLocalized, UChar* result, int32_t resultLength, UErrorCode* status) |
![]() | ![]() | Extract the pattern from a UNumberFormat. More... | |
![]() | ![]() | U_CAPI void | unum_getSymbols ( const UNumberFormat *fmt, UNumberFormatSymbols *syms) |
![]() | ![]() | Get the symbols associated with a UNumberFormat. More... | |
![]() | ![]() | U_CAPI void | unum_setSymbols ( UNumberFormat* fmt, const UNumberFormatSymbols* symbolsToSet, UErrorCode *status) |
![]() | ![]() | Set the symbols associated with a UNumberFormat. More... |
Number Format C API Provides functions for formatting and parsing a number. Also provides methods for determining which locales have number formats, and what their names are.
UNumberFormat helps you to format and parse numbers for any locale. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal. There are different number format styles like decimal, currency, percent and spellout.
To format a number for the current Locale, use one of the static factory methods:
. UChar myString[20]; . UFieldPosition pos=0; . double myNumber = 7.0; . UErrorCode success = U_ZERO_ERROR; . UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, &success) . unum_formatDouble(nf, myNumber, myString, u_strlen(myString), &pos, &status); . printf(" Example 1: %s\n", austrdup(myString) ); //austrdup( a function used to convert UChar* to char*)
. UChar* myString; . t_int32 i, resultlength, reslenneeded; . UErrorCode success = U_ZERO_ERROR; . UFieldPosition pos=0; . t_int32 a[] = { 123, 3333, -1234567 }; . const t_int32 a_len = sizeof(a) / sizeof(a[0]); . UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, &success) . for (i = 0; i < a_len; i++) { . resultlength=0; . reslenneeded=unum_format(nf, a[i], NULL, resultlength, &pos, &status); . if(status==U_BUFFER_OVERFLOW_ERROR){ . status=U_ZERO_ERROR; . resultlength=resultlengthneeded+1; . result=(UChar*)malloc(sizeof(UChar) * resultlength); . unum_format(nf, a[i], result, resultlength, &pos, &status); . } . printf(" Example 2: %s\n", austrdup(result) ); . free(result); . }
. UNumberFormat* nf = unum_open(UNUM_DEFAULT, "fr_FR", &success)
. UErrorCode success; . t_int32 pos=0; . unum_parse(nf, result, u_strlen(result), &pos, &success);
You can also control the display of numbers with such function as unum_getAttribues() and unum_setAtributes(). where in you can set the miminum fraction digits, grouping used etc.
You can also use forms of the parse and format methods with ParsePosition and UFieldPosition to allow you to:
It is also possible to change or set the symbols used for a particular locale like the currency symbol, the grouping seperator , monetary seperator etc by making use of functions unum_setSymbols() and unum_getSymbols().
#define UNFSYMBOLSMAXSIZE () |
typedef void* UNumberFormat |
A number formatter.
For usage in C programs.
typedef enum UNumberFormatStyle UNumberFormatStyle |
typedef enum UNumberFormatRoundingMode UNumberFormatRoundingMode |
typedef enum UNumberFormatPadPosition UNumberFormatPadPosition |
typedef enum UNumberFormatAttribute UNumberFormatAttribute |
typedef enum UNumberFormatTextAttribute UNumberFormatTextAttribute |
typedef struct UNumberFormatSymbols UNumberFormatSymbols |
enum UNumberFormatStyle |
The possible number format styles.
UNUM_DECIMAL | Decimal format. |
UNUM_CURRENCY | Currency format. |
UNUM_PERCENT | Percent format. |
UNUM_SPELLOUT | Spellout format. |
UNUM_DEFAULT | Default format. |
enum UNumberFormatRoundingMode |
enum UNumberFormatPadPosition |
UNUM_PAD_BEFORE_PREFIX | |
UNUM_PAD_AFTER_PREFIX | |
UNUM_PAD_BEFORE_SUFFIX | |
UNUM_PAD_AFTER_SUFFIX |
enum UNumberFormatAttribute |
The possible UNumberFormat numeric attributes.
UNUM_PARSE_INT_ONLY | Parse integers only. |
UNUM_GROUPING_USED | Use grouping separator. |
UNUM_DECIMAL_ALWAYS_SHOWN | Always show decimal point. |
UNUM_MAX_INTEGER_DIGITS | Maximum integer digits. |
UNUM_MIN_INTEGER_DIGITS | Minimum integer digits. |
UNUM_INTEGER_DIGITS | Integer digits. |
UNUM_MAX_FRACTION_DIGITS | Maximum fraction digits. |
UNUM_MIN_FRACTION_DIGITS | Minimum fraction digits. |
UNUM_FRACTION_DIGITS | Fraction digits. |
UNUM_MULTIPLIER | Multiplier. |
UNUM_GROUPING_SIZE | Grouping size. |
UNUM_ROUNDING_MODE | Rounding Mode. |
UNUM_ROUNDING_INCREMENT | Rounding increment. |
UNUM_FORMAT_WIDTH |
The width to which the output of format() is padded. |
UNUM_PADDING_POSITION | The position at which padding will take place. |
enum UNumberFormatTextAttribute |
The possible UNumberFormat text attributes.
UNUM_POSITIVE_PREFIX | Positive prefix. |
UNUM_POSITIVE_SUFFIX | Positive suffix. |
UNUM_NEGATIVE_PREFIX | Negative prefix. |
UNUM_NEGATIVE_SUFFIX | Negative suffix. |
UNUM_PADDING_CHARACTER | The character used to pad to the format width. |
U_CAPI UNumberFormat * unum_open (UNumberFormatStyle style, const char * locale, UErrorCode * status) |
Open a new UNumberFormat for formatting and parsing numbers.
A UNumberFormat may be used to format numbers in calls to \Ref{unum_format}, and to parse numbers in calls to \Ref{unum_parse}.
style | The type of number format to open: one of UNUM_DECIMAL, UNUM_CURRENCY, UNUM_PERCENT, UNUM_SPELLOUT, or UNUM_DEFAULT |
locale | The locale specifying the formatting conventions |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI UNumberFormat * unum_openPattern (const UChar * pattern, int32_t patternLength, const char * locale, UErrorCode * status) |
Open a new UNumberFormat for formatting and parsing numbers.
A UNumberFormat may be used to format numbers in calls to \Ref{unum_format}, and to parse numbers in calls to \Ref{unum_parse}.
pattern | A pattern specifying the format to use. |
patternLength | The number of characters in the pattern, or -1 if null-terminated. |
locale | The locale specifying the formatting conventions |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI void unum_close (UNumberFormat * fmt) |
Close a UNumberFormat.
Once closed, a UNumberFormat may no longer be used.
fmt | The formatter to close. |
U_CAPI UNumberFormat * unum_clone (const UNumberFormat * fmt, UErrorCode * status) |
Open a copy of a UNumberFormat.
This function performs a deep copy.
fmt | The format to copy |
status | A pointer to an UErrorCode to receive any errors. |
U_CAPI int32_t unum_format (const UNumberFormat * fmt, int32_t number, UChar * result, int32_t resultLength, UFieldPosition * pos, UErrorCode * status) |
Format an integer using a UNumberFormat.
The integer will be formatted according to the UNumberFormat's locale.
fmt | The formatter to use. |
number | The number to format. |
result | A pointer to a buffer to receive the formatted number. |
resultLength | The maximum size of result. |
pos | If not 0, a UFieldPosition which will receive the information on a specific field. |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI int32_t unum_formatDouble (const UNumberFormat * fmt, double number, UChar * result, int32_t resultLength, UFieldPosition * pos, UErrorCode * status) |
Format a double using a UNumberFormat.
The double will be formatted according to the UNumberFormat's locale.
fmt | The formatter to use. |
number | The number to format. |
result | A pointer to a buffer to receive the formatted number. |
resultLength | The maximum size of result. |
pos | If not 0, a UFieldPosition which will receive the information on a specific field. |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI int32_t unum_parse (const UNumberFormat * fmt, const UChar * text, int32_t textLength, int32_t * parsePos, UErrorCode * status) |
Parse a string into an integer using a UNumberFormat.
The string will be parsed according to the UNumberFormat's locale.
fmt | The formatter to use. |
text | The text to parse. |
textLength | The length of text, or -1 if null-terminated. |
parsePos | If not 0, on input a pointer to an integer specifying the offset at which to begin parsing. If not 0, on output the offset at which parsing ended. |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI double unum_parseDouble (const UNumberFormat * fmt, const UChar * text, int32_t textLength, int32_t * parsePos, UErrorCode * status) |
Parse a string into a double using a UNumberFormat.
The string will be parsed according to the UNumberFormat's locale.
fmt | The formatter to use. |
text | The text to parse. |
textLength | The length of text, or -1 if null-terminated. |
parsePos | If not 0, on input a pointer to an integer specifying the offset at which to begin parsing. If not 0, on output the offset at which parsing ended. |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI const char * unum_getAvailable (int32_t index) |
Get a locale for which number formatting patterns are available.
A UNumberFormat in a locale returned by this function will perform the correct formatting and parsing for the locale.
index | The index of the desired locale. |
U_CAPI int32_t unum_countAvailable (void) |
Determine how many locales have number formatting patterns available.
This function is most useful as determining the loop ending condition for calls to \Ref{unum_getAvailable}.
U_CAPI int32_t unum_getAttribute (const UNumberFormat * fmt, UNumberFormatAttribute attr) |
Get a numeric attribute associated with a UNumberFormat.
An example of a numeric attribute is the number of integer digits a formatter will produce.
fmt | The formatter to query. |
attr | The attribute to query; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED, UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS, UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION. |
U_CAPI void unum_setAttribute (UNumberFormat * fmt, UNumberFormatAttribute attr, int32_t newValue) |
Set a numeric attribute associated with a UNumberFormat.
An example of a numeric attribute is the number of integer digits a formatter will produce.
fmt | The formatter to set. |
attr | The attribute to set; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED, UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS, UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION. |
newValue | The new value of attr. |
U_CAPI double unum_getDoubleAttribute (const UNumberFormat * fmt, UNumberFormatAttribute attr) |
Get a numeric attribute associated with a UNumberFormat.
An example of a numeric attribute is the number of integer digits a formatter will produce.
fmt | The formatter to query. |
attr | The attribute to query; e.g. UNUM_ROUNDING_INCREMENT. |
U_CAPI void unum_setDoubleAttribute (UNumberFormat * fmt, UNumberFormatAttribute attr, double newValue) |
Set a numeric attribute associated with a UNumberFormat.
An example of a numeric attribute is the number of integer digits a formatter will produce.
fmt | The formatter to set. |
attr | The attribute to set; e.g. UNUM_ROUNDING_INCREMENT. |
newValue | The new value of attr. |
U_CAPI int32_t unum_getTextAttribute (const UNumberFormat * fmt, UNumberFormatTextAttribute tag, UChar * result, int32_t resultLength, UErrorCode * status) |
Get a text attribute associated with a UNumberFormat.
An example of a text attribute is the suffix for positive numbers.
fmt | The formatter to query. |
attr | The attribute to query; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX, UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX |
result | A pointer to a buffer to receive the attribute. |
resultLength | The maximum size of result. |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI void unum_setTextAttribute (UNumberFormat * fmt, UNumberFormatTextAttribute tag, const UChar * newValue, int32_t newValueLength, UErrorCode * status) |
Set a text attribute associated with a UNumberFormat.
An example of a text attribute is the suffix for positive numbers.
fmt | The formatter to set. |
attr | The attribute to set; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX, UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX |
newValue | The new value of attr. |
newValueLength | The length of newValue, or -1 if null-terminated. |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI int32_t unum_toPattern (const UNumberFormat * fmt, bool_t isPatternLocalized, UChar * result, int32_t resultLength, UErrorCode * status) |
Extract the pattern from a UNumberFormat.
The pattern will follow the pattern syntax.
fmt | The formatter to query. |
isPatternLocalized | TRUE if the pattern should be localized, FALSE otherwise. |
result | A pointer to a buffer to receive the pattern. |
resultLength | The maximum size of result. |
status | A pointer to an UErrorCode to receive any errors |
U_CAPI void unum_getSymbols (const UNumberFormat * fmt, UNumberFormatSymbols * syms) |
Get the symbols associated with a UNumberFormat.
A UNumberFormat uses symbols to represent the special locale-dependent characters in a number, for example the percent sign.
fmt | The formatter to query. |
syms | A pointer to a UNumberFormatSymbols to receive the symbols associated with fmt. |
U_CAPI void unum_setSymbols (UNumberFormat * fmt, const UNumberFormatSymbols * symbolsToSet, UErrorCode * status) |
Set the symbols associated with a UNumberFormat.
A UNumberFormat uses symbols to represent the special locale-dependent characters in a number, for example the percent sign.
fmt | The formatter to set. |
symbolsToSet | The UNumberFormatSymbols to associate with fmt. |
status | A pointer to an UErrorCode to receive any errors. |