我正在尝试将数字格式化为货币并遇到问题。我已尝试使用默认语言环境和特定语言环境(如下所示)。尽管如此,该数字仍采用科学记数法格式化。
QLocale::setDefault( QLocale(QLocale::English, QLocale::UnitedStates) );
reportCost->setText( QString("$%L1").arg( cost ) );
麻烦的是,一旦我达到数百万,我就会获得$1.6473e6
而不是$1,647,312
这样的数字。我该如何解决这个问题?
另外,在Qt中根本没有办法格式化货币,比如定位符号和正确的负面表示吗?
我现在无法在Windows上测试,所以我不知道这是否是特定于Linux的。
答案 0 :(得分:3)
不幸的是,QLocale
的当前实施在许多这些方面都不尽如人意。请参阅"QLocale: It’s about time (and dates, and languages, and …)",了解将来的发展方向。
目前,一个快速而肮脏的解决方案是:
QString("$%L1").arg(amt, 0, 'f', 2);
如果您需要真正的本地化,ICU libraries可能会有所帮助。
答案 1 :(得分:0)
我知道这是一个古老的问题,但值得指出任何偶然发现这一点的人,在Qt 4.8及以上版本中,首先要尝试的是QLocale::toCurrencyString(...)