Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Generic / String / String.cpp
diff options
context:
space:
mode:
1 files changed, 5 insertions, 1 deletions
-rw-r--r--src/Generic/String/String.cpp6
diff --git a/src/Generic/String/String.cpp b/src/Generic/String/String.cpp
index 5bc17b4..20f01fe 100644
--- a/src/Generic/String/String.cpp
+++ b/src/Generic/String/String.cpp
@@ -96,7 +96,11 @@ String& String::operator+=(double number) {
*this += "-";
number *= -1;
}
- number += 1.0 / (DOUBLE_PRECISION * 10); // bump up the number, in cases it becomes something like 8.59999999999...
+ const double FRAC_PREC = 1.0 / DOUBLE_PRECISION;
+ number += FRAC_PREC * 0.1; // bump up the number, in cases it becomes something like 8.59999999999...
+ double decimal = number - (unsigned)number;
+ for (unsigned i = 10; i < DOUBLE_PRECISION && (decimal - (unsigned)decimal) > 1.0 / DOUBLE_PRECISION; i += 10)
+ decimal *= 10;
return ((*this += (unsigned)number) += ".")
+= (unsigned)((number - (unsigned)number) * DOUBLE_PRECISION);
}