diff options
author | mbkma <[email protected]> | 2019-04-23 20:32:55 +0200 |
---|---|---|
committer | lukefromdc <[email protected]> | 2019-04-24 19:18:14 +0000 |
commit | 1f84e1918c1f1ca57fa63f72b7c1f39c5c4563ac (patch) | |
tree | 74df649093dba5c7529a0b61fbe0d2f445a42404 | |
parent | cd896f3702aeb727e0d15b3ec1afaf953b6aaca0 (diff) | |
download | mate-calc-1f84e1918c1f1ca57fa63f72b7c1f39c5c4563ac.tar.bz2 mate-calc-1f84e1918c1f1ca57fa63f72b7c1f39c5c4563ac.tar.xz |
fixes issues 25 and 26
-rw-r--r-- | src/mp-serializer.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mp-serializer.c b/src/mp-serializer.c index 560aa64..2a5c3e3 100644 --- a/src/mp-serializer.c +++ b/src/mp-serializer.c @@ -352,14 +352,19 @@ mp_cast_to_exponential_string(MpSerializer *serializer, const MPNumber *x, gbool gchar * mp_serializer_to_string(MpSerializer *serializer, const MPNumber *x) { + MPNumber cmp, xcmp; gchar *s0; int n_digits = 0; - + mp_set_from_integer(10, &cmp); + mp_xpowy_integer(&cmp, -(serializer->priv->trailing_digits), &cmp); + mp_real_component(x, &xcmp); + mp_abs(&xcmp, &xcmp); switch(serializer->priv->format) { default: case MP_DISPLAY_FORMAT_AUTOMATIC: s0 = mp_cast_to_string(serializer, x, &n_digits); - if (n_digits <= serializer->priv->leading_digits) + if ((n_digits <= serializer->priv->leading_digits && + mp_is_greater_equal(&xcmp, &cmp)) || mp_is_complex(x)) return s0; else { g_free (s0); |