@@ -465,12 +465,20 @@ STATIC mp_obj_t mp_builtin_repr(mp_obj_t o_in) {
465465}
466466MP_DEFINE_CONST_FUN_OBJ_1 (mp_builtin_repr_obj , mp_builtin_repr );
467467
468- STATIC mp_obj_t mp_builtin_round (mp_obj_t o_in ) {
469- // TODO support second arg
468+ STATIC mp_obj_t mp_builtin_round (mp_uint_t n_args , const mp_obj_t * args ) {
469+ // TODO really support second arg
470+ mp_obj_t o_in = args [0 ];
470471 if (MP_OBJ_IS_INT (o_in )) {
471472 return o_in ;
472473 }
473474#if MICROPY_PY_BUILTINS_FLOAT
475+ mp_int_t num_dig = 0 ;
476+ if (n_args > 1 ) {
477+ num_dig = mp_obj_get_int (args [1 ]);
478+ if (num_dig > 0 ) {
479+ mp_not_implemented ("round(..., N>0)" );
480+ }
481+ }
474482 mp_float_t val = mp_obj_get_float (o_in );
475483 mp_float_t rounded = MICROPY_FLOAT_C_FUN (round )(val );
476484 mp_int_t r = rounded ;
@@ -480,12 +488,15 @@ STATIC mp_obj_t mp_builtin_round(mp_obj_t o_in) {
480488 } else if (val - rounded == -0.5 ) {
481489 r &= ~1 ;
482490 }
491+ if (n_args > 1 ) {
492+ return mp_obj_new_float (r );
493+ }
483494#else
484495 mp_int_t r = mp_obj_get_int (o_in );
485496#endif
486497 return mp_obj_new_int (r );
487498}
488- MP_DEFINE_CONST_FUN_OBJ_1 (mp_builtin_round_obj , mp_builtin_round );
499+ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mp_builtin_round_obj , 1 , 2 , mp_builtin_round );
489500
490501STATIC mp_obj_t mp_builtin_sum (mp_uint_t n_args , const mp_obj_t * args ) {
491502 assert (1 <= n_args && n_args <= 2 );
0 commit comments