From 09e9d9d991d58348a873fa4d7b8fbc3809b85c4a Mon Sep 17 00:00:00 2001 From: vsr Date: Thu, 19 Jun 2008 09:21:03 +0000 Subject: [PATCH] Improve double values to string convertor to perform smart rounding of values. --- src/DlgRef/DlgRef_SpinBox.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/DlgRef/DlgRef_SpinBox.cxx b/src/DlgRef/DlgRef_SpinBox.cxx index 35bec55ba..2a595b12d 100644 --- a/src/DlgRef/DlgRef_SpinBox.cxx +++ b/src/DlgRef/DlgRef_SpinBox.cxx @@ -29,6 +29,7 @@ #include "DlgRef_SpinBox.h" #include +#include //================================================================================= // class : DlgRef_SpinBox() @@ -105,9 +106,22 @@ void DlgRef_SpinBox::RangeStepAndValidator(double min, double max,double step, QString DlgRef_SpinBox::PrintDoubleValue (double theValue, int thePrecision) { + const double prec = 1e-12; + QString aRes; aRes.setNum(theValue, 'g', thePrecision); + if ( prec > 0 ) { + int p = 0; + while ( p < thePrecision ) { + aRes.setNum( theValue, 'g', p++ ); + double v = aRes.toDouble(); + double err = fabs( theValue - v ); + if ( err > 0 && err <= prec ) + break; + } + } + // remove trailing zeroes QString delim( "." ); -- 2.39.2