2017-01-29 9 views
1
Cで

:PyQtはでQlocaleとブラジルの通貨形式

QLocale loc = QLocale::system(); 
QLocale brasil(QLocale::Portuguese); 
loc.setNumberOptions(brasil.numberOptions()); 
QLocale::setDefault(loc); 

cout << brasil.toString(value * 0.01, 'f', 2).toStdString(); 

は、私がこれをしなかった:問題

# -*- coding: utf-8 -*- 
from PyQt4 import QtCore 
value = 225710000 #integer 
lang = QtCore.QLocale('pt_BR') 
print lang.toString(int(value * 0.01)) 

Pythonで2.257.100,00(私の場合の正しい値)

私は出力を持っている:225.710.000

C++私は、例えば出力を、持っていたにしながら、あります

誰かが私にこれを解決するのに役立つでしょうか?ありがとうございました!

+0

あなたが表示されているコードがありませんその出力を生成する。 'lang.toString(int(value * 0.01)) 'の出力は' 2.257.100'(これは正しい)です。あなたが表示している出力は 'lang.toString(int(value))'です。入力値は整数なので、明らかに浮動小数点値を使用するC++の例と同じ結果を生成しません。 – ekhumoro

答えて

0

C++の例として、あなただけのtoStringに同じ引数を渡す必要があり、同じ出力を得るために:

ロケールであまりにも解決
>>> from PyQt4 import QtCore 
>>> value = 225710000 
>>> lang = QtCore.QLocale('pt_BR') 
>>> print lang.toString(value * 0.01, 'f', 2) 
2.257.100,00 
1

#https://docs.python.org/2/library/locale.html 
import locale 
locale.setlocale(locale.LC_ALL, '') 
print locale.format('%.2f', (value * 0.01), True) 
関連する問題