The Number JavaScript Object
The QML Number object extends the JS Number object with locale aware functions.
string Number::toLocaleString(locale, format, precision)
Converts the Number to a string suitable for the specified locale in the specified format, with the specified precision.
Valid formats are:
- 'f' Decimal floating point, e.g. 248.65
- 'e' Scientific notation using e character, e.g. 2.4865e+2
- 'E' Scientific notation using E character, e.g. 2.4865E+2
- 'g' Use the shorter of e or f
- 'G' Use the shorter of E or f
If precision is not specified, the precision will be 2.
If the format is not specified 'f' will be used.
If locale is not specified, the default locale will be used.
The following example shows a number formatted for the German locale:
import QtQuick 2.0 Text { text: "The value is: " + Number(4742378.423).toLocaleString(Qt.locale("de_DE")) }
You can customize individual fields of the locale to tightly control the output:
let locale = Qt.locale("de_DE");
let a = Number(1000).toLocaleString(locale)); // a == 1.000,00
locale.numberOptions = Locale.OmitGroupSeparator;
let b = Number(1000).toLocaleString(locale)); // b == 1000,00
You can apply toLocaleString() directly to constants, provided the decimal is included in the constant, e.g.
123.0.toLocaleString(Qt.locale("de_DE")) // OK
123..toLocaleString(Qt.locale("de_DE")) // OK
123.toLocaleString(Qt.locale("de_DE")) // fails
string Number::toLocaleCurrencyString(locale, symbol)
Converts the Number to a currency using the currency and conventions of the specified locale. If symbol is specified it will be used as the currency symbol.
string Number::fromLocaleString(locale, number)
Returns a Number by parsing number using the conventions of the supplied locale.
If locale is not supplied the default locale will be used.
For example, using the German locale:
var german = Qt.locale("de_DE");
var d;
d = Number.fromLocaleString(german, "1234,56") // d == 1234.56
d = Number.fromLocaleString(german, "1.234,56") // d == 1234.56
d = Number.fromLocaleString(german, "1234.56") // throws exception
d = Number.fromLocaleString(german, "1.234") // d == 1234.0
See also Locale and Locale::currencySymbol().