[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