diff --git a/py/mpprint.c b/py/mpprint.c index 51c16f4e3d299611014eef75473ea4170670fd32..6da6614b7c3d804ed19a67aca75ef094fc6bf9a2 100644 --- a/py/mpprint.c +++ b/py/mpprint.c @@ -363,21 +363,11 @@ int mp_print_float(const mp_print_t *print, mp_float_t f, char fmt, int flags, c if ((flags & PF_FLAG_PAD_AFTER_SIGN) && buf[0] < '0') { // We have a sign character s++; - if (*s <= '9' || (flags & PF_FLAG_PAD_NAN_INF)) { - // We have a number, or we have a inf/nan and PAD_NAN_INF is set - // With '{:06e}'.format(float('-inf')) you get '-00inf' - chrs += mp_print_strn(print, &buf[0], 1, 0, 0, 1); - width--; - len--; - } + chrs += mp_print_strn(print, &buf[0], 1, 0, 0, 1); + width--; + len--; } - if (*s > 'A' && (flags & PF_FLAG_PAD_NAN_INF) == 0) { - // We have one of the inf or nan variants, suppress zero fill. - // With printf, if you use: printf("%06e", -inf) then you get " -inf" - // so suppress the zero fill. - fill = ' '; - } chrs += mp_print_strn(print, s, len, flags, fill, width); return chrs; diff --git a/py/mpprint.h b/py/mpprint.h index ceea3b978d34e28aba9ea505754a4f18695202da..1770fcffe3c5735bff03d75e276156abef59b76d 100644 --- a/py/mpprint.h +++ b/py/mpprint.h @@ -37,8 +37,7 @@ #define PF_FLAG_PAD_AFTER_SIGN (0x040) #define PF_FLAG_CENTER_ADJUST (0x080) #define PF_FLAG_ADD_PERCENT (0x100) -#define PF_FLAG_PAD_NAN_INF (0x200) -#define PF_FLAG_SHOW_OCTAL_LETTER (0x400) +#define PF_FLAG_SHOW_OCTAL_LETTER (0x200) typedef void (*mp_print_strn_t)(void *data, const char *str, mp_uint_t len); diff --git a/py/objstr.c b/py/objstr.c index 0246262a518a31544cf7f8bba1f0fb2fb57f5a7c..d11f097fcafafe647363623f44c1c50f68a74342 100644 --- a/py/objstr.c +++ b/py/objstr.c @@ -1200,7 +1200,6 @@ mp_obj_t mp_obj_str_format(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwa type = 'g'; } - flags |= PF_FLAG_PAD_NAN_INF; // '{:06e}'.format(float('-inf')) should give '-00inf' switch (type) { #if MICROPY_PY_BUILTINS_FLOAT case 'e': diff --git a/tests/float/string_format.py b/tests/float/string_format.py index b5ff68b8ca10e9a83969f61271918818f63e113d..265efedec57417a8b4de481122bded8caa9377bf 100644 --- a/tests/float/string_format.py +++ b/tests/float/string_format.py @@ -23,6 +23,10 @@ test("{:10.4F}", -123.456) test("{:10.4G}", 123.456) test("{:10.4G}", -123.456) +test("{:06e}", float("inf")) +test("{:06e}", float("-inf")) +test("{:06e}", float("nan")) + # The following fails right now #test("{:10.1}", 0.0) diff --git a/tests/float/string_format_modulo.py b/tests/float/string_format_modulo.py index ddca0b555591aede06ef65f2680dcba56f463006..11df9abbd25915b861d68228fd90241e84238b18 100644 --- a/tests/float/string_format_modulo.py +++ b/tests/float/string_format_modulo.py @@ -17,3 +17,7 @@ print("%f" % 1.23456) print("%F" % 1.23456) print("%g" % 1.23456) print("%G" % 1.23456) + +print("%06e" % float("inf")) +print("%06e" % float("-inf")) +print("%06e" % float("nan"))