我正在尝试将数字格式化为货币并遇到问题。我尝试使用默认语言环境和特定语言环境(如下所示)。尽管如此,该数字仍采用科学计数法格式。

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可能会有所帮助。

09-15 14:02