Merge pull request #22251 from aaronfranke/decimal-int-strip

Fix: Strip integer part in "decimals"
This commit is contained in:
Rémi Verschelde 2018-09-20 10:44:37 +02:00 committed by GitHub
commit a21ee5aa2c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -57,7 +57,7 @@ uint32_t Math::rand() {
} }
int Math::step_decimals(double p_step) { int Math::step_decimals(double p_step) {
static const int maxn = 9; static const int maxn = 10;
static const double sd[maxn] = { static const double sd[maxn] = {
0.9999, // somehow compensate for floating point error 0.9999, // somehow compensate for floating point error
0.09999, 0.09999,
@ -67,17 +67,19 @@ int Math::step_decimals(double p_step) {
0.000009999, 0.000009999,
0.0000009999, 0.0000009999,
0.00000009999, 0.00000009999,
0.000000009999 0.000000009999,
0.0000000009999
}; };
double as = Math::abs(p_step); double abs = Math::abs(p_step);
double decs = abs - (int)abs; // Strip away integer part
for (int i = 0; i < maxn; i++) { for (int i = 0; i < maxn; i++) {
if (as >= sd[i]) { if (decs >= sd[i]) {
return i; return i;
} }
} }
return maxn; return 0;
} }
double Math::dectime(double p_value, double p_amount, double p_step) { double Math::dectime(double p_value, double p_amount, double p_step) {