0022389: [CEA 980] Use the "." as a decimal separator and not use the "," as a thousand separator

Avoid thousands separator on "C" locale (Qt bug?)
This commit is contained in:
vsr 2013-10-29 14:00:28 +00:00
parent 7d14553db6
commit c5375d29fb

View File

@ -895,12 +895,14 @@ QString DlgRef::PrintDoubleValue( double theValue, int thePrecision )
if ( qAbs(theValue) < prec ) if ( qAbs(theValue) < prec )
return "0"; return "0";
QString aRes = QLocale().toString( theValue, thePrecision >= 0 ? 'f' : 'g', qAbs( thePrecision ) ); QLocale loc = QLocale(); // default locale
if ( loc.name() == "C" ) loc.setNumberOptions( QLocale::OmitGroupSeparator );
QString aRes = loc.toString( theValue, thePrecision >= 0 ? 'f' : 'g', qAbs( thePrecision ) );
if ( prec > 0 ) { if ( prec > 0 ) {
int p = 0; int p = 0;
while ( p < thePrecision ) { while ( p < thePrecision ) {
QString aRes = QLocale().toString( theValue, thePrecision >= 0 ? 'f' : 'g', qAbs( p++ ) ); QString aRes = loc.toString( theValue, thePrecision >= 0 ? 'f' : 'g', qAbs( p++ ) );
double v = aRes.toDouble(); double v = aRes.toDouble();
double err = qAbs( theValue - v ); double err = qAbs( theValue - v );
if ( err > 0 && err <= prec ) if ( err > 0 && err <= prec )
@ -910,8 +912,8 @@ QString DlgRef::PrintDoubleValue( double theValue, int thePrecision )
// remove trailing zeroes // remove trailing zeroes
QRegExp expre( QString( "(%1|%2)[+-]?[0-9]+$" ).arg( QLocale().exponential().toLower(), QRegExp expre( QString( "(%1|%2)[+-]?[0-9]+$" ).arg( loc.exponential().toLower(),
QLocale().exponential().toUpper() ) ); loc.exponential().toUpper() ) );
int idx = aRes.indexOf( expre ); int idx = aRes.indexOf( expre );
QString aResExp = ""; QString aResExp = "";
@ -920,7 +922,7 @@ QString DlgRef::PrintDoubleValue( double theValue, int thePrecision )
aRes = aRes.left( idx ); aRes = aRes.left( idx );
} }
if ( aRes.contains( QLocale().decimalPoint() ) ) if ( aRes.contains( loc.decimalPoint() ) )
aRes.remove( QRegExp( QString( "(\\%1|0)0*$" ).arg( QLocale().decimalPoint() ) ) ); aRes.remove( QRegExp( QString( "(\\%1|0)0*$" ).arg( QLocale().decimalPoint() ) ) );
return aRes == "-0" ? QString( "0" ) : aRes + aResExp; return aRes == "-0" ? QString( "0" ) : aRes + aResExp;