Qt региональное форматирование большой валюты (или числа) в linux - PullRequest
1 голос
/ 17 мая 2011

Я пытаюсь отформатировать число как валюту и у меня возникают проблемы.Я пробовал как с локалью по умолчанию, так и с конкретной (как показано ниже).Тем не менее, число отформатировано в научной нотации.

QLocale::setDefault( QLocale(QLocale::English, QLocale::UnitedStates) );
reportCost->setText( QString("$%L1").arg( cost ) );

Беда в том, что как только я набираю миллионы, я получаю числа типа $1.6473e6, а не $1,647,312.Как я могу это исправить?

Кроме того, действительно ли вообще нет способа отформатировать валюту в Qt, например, позиционирование символа и правильное отрицательное представление?

Я не могу сейчас тестировать в Windowsтак что я не знаю, относится ли это к Linux.

Ответы [ 2 ]

3 голосов
/ 17 мая 2011

К сожалению, текущая реализация QLocale не дотягивает во многих из этих областей.См. «QLocale: речь идет о времени (и датах, и языках, и…)» для объяснения того, к чему это приведет в будущем.

А пока, быстрое иГрязное решение:

QString("$%L1").arg(amt, 0, 'f', 2);

Если вам нужна настоящая локализация, библиотеки ICU могут быть полезны.

0 голосов
/ 25 июня 2017

Я знаю, что это старый вопрос, но стоит указать всем, кто сталкивается с этим, что в Qt 4.8 и выше, первое, что нужно попробовать, должно быть QLocale::toCurrencyString(...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...