[QGIS Commit] r15706 - trunk/qgis/src/app
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Fri Apr 15 09:45:21 EDT 2011
Author: jef
Date: 2011-04-15 06:45:21 -0700 (Fri, 15 Apr 2011)
New Revision: 15706
Modified:
trunk/qgis/src/app/qgsfieldcalculator.cpp
Log:
fix #3606
Modified: trunk/qgis/src/app/qgsfieldcalculator.cpp
===================================================================
--- trunk/qgis/src/app/qgsfieldcalculator.cpp 2011-04-15 13:26:27 UTC (rev 15705)
+++ trunk/qgis/src/app/qgsfieldcalculator.cpp 2011-04-15 13:45:21 UTC (rev 15706)
@@ -18,6 +18,7 @@
#include "qgssearchstring.h"
#include "qgsvectordataprovider.h"
#include "qgsvectorlayer.h"
+
#include <QMessageBox>
QgsFieldCalculator::QgsFieldCalculator( QgsVectorLayer* vl )
@@ -192,7 +193,24 @@
}
else if ( value.isNumeric() )
{
- mVectorLayer->changeAttributeValue( feature.id(), mAttributeId, value.number(), false );
+ const QgsField &f = mVectorLayer->pendingFields()[ mAttributeId ];
+ QVariant v;
+
+ if ( f.type() == QVariant::Double && f.precision() > 0 )
+ {
+ v = QString::number( value.number(), 'g', f.precision() );
+ }
+ else if ( f.type() == QVariant::Double && f.precision() > 0 && f.precision() == 0 )
+ {
+ v = QString::number( qRound( value.number() ) );
+ }
+ else
+ {
+ v = value.number();
+ }
+
+ v.convert( f.type() );
+ mVectorLayer->changeAttributeValue( feature.id(), mAttributeId, v, false );
}
else if ( value.isNull() )
{
More information about the QGIS-commit
mailing list