diff --git a/src/lib/commands/powe.c b/src/lib/commands/powe.c index 5a77aa16..8687b720 100644 --- a/src/lib/commands/powe.c +++ b/src/lib/commands/powe.c @@ -36,6 +36,7 @@ #include +#include #ifdef _WIN32 #include #endif @@ -172,23 +173,20 @@ prpower(char *name, struct powstr *pow, int round_flag) static void out5(double value, int round_val, int round_flag) { + double aval; + if (value > round_val && round_flag) value = (int)(value / round_val + 0.5) * round_val; - if (value < -9999.5e3) - pr("%4.0fM", value / 1e6); - else if (value < -9950.) - pr("%4.0fK", value / 1000.); - else if (value < -999.) - pr("%4.1fK", value / 1000.); - else if (value < 1000.) + aval = fabs(value); + if (aval < 1000.) pr("%4.0f ", value); - else if (value < 9.95e3) - pr("%4.1fK", value / 1000.); - else if (value < 9999.5e3) - pr("%4.0fK", value / 1000.); - else if (value < 9.95e6) + else if (aval < 9.95e3) + pr("%4.1fK", value / 1e3); + else if (aval < 999.5e3) + pr("%4.0fK", value / 1e3); + else if (aval < 9.95e6) pr("%4.1fM", value / 1e6); - else if (value < 9999.5e6) + else if (aval < 999.5e6) pr("%4.0fM", value / 1e6); else pr("%4.0fG", value / 1e9);