我正在尝试将数字格式化为货币并遇到问题。我尝试使用默认语言环境和特定语言环境(如下所示)。尽管如此,该数字仍采用科学计数法格式。
QLocale::setDefault( QLocale(QLocale::English, QLocale::UnitedStates) );
reportCost->setText( QString("$%L1").arg( cost ) );
问题在于,当我达到百万时,我会得到像
$1.6473e6
而不是$1,647,312
的数字。我怎样才能解决这个问题?另外,真的没有办法在Qt中完全格式化货币,例如放置符号和适当的负表示吗?
我现在无法在Windows上进行测试,因此我不知道这是否特定于Linux。
最佳答案
不幸的是,在许多这些 Realm 中,QLocale
的当前实现都不够。有关 future 的发展方向,请参见"QLocale: It’s about time (and dates, and languages, and …)"。
现在,一种快速而又肮脏的解决方案是:
QString("$%L1").arg(amt, 0, 'f', 2);
如果您需要真正的本地化,ICU libraries可能会有所帮助。