summaryrefslogtreecommitdiff
path: root/src/Fl_Valuator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Valuator.cxx')
-rw-r--r--src/Fl_Valuator.cxx11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/Fl_Valuator.cxx b/src/Fl_Valuator.cxx
index b3837f1a6..4e83bf5de 100644
--- a/src/Fl_Valuator.cxx
+++ b/src/Fl_Valuator.cxx
@@ -118,10 +118,13 @@ double Fl_Valuator::increment(double v, int n) {
int Fl_Valuator::format(char* buffer) {
double v = value();
// MRS: THIS IS A HACK - RECOMMEND ADDING BUFFER SIZE ARGUMENT
- if (!A) return snprintf(buffer, 128, "%g", v);
- int i, X;
- double ba = B / A;
- for (X = 1, i = 0; X < ba; X *= 10) i++;
+ if (!A || !B) return snprintf(buffer, 128, "%g", v);
+ int i;
+ double ab = A/B;
+ for (i=0; i<8; i++) {
+ if ((ab-floor(ab))<1e-9) break;
+ ab *= 10.0;
+ }
return sprintf(buffer, "%.*f", i, v);
}