mirror of
https://github.com/pocketpy/pocketpy
synced 2025-11-09 21:20:17 +00:00
Refactor integer inputs
This commit is contained in:
parent
9437c99244
commit
5aaa39048e
@ -137,12 +137,10 @@ void init_builtins(VM* _vm) {
|
||||
|
||||
_vm->bind(_vm->builtins, "round(x, ndigits=None)", [](VM* vm, ArgsView args) {
|
||||
f64 x = CAST(f64, args[0]);
|
||||
if(is_int(args[0])) return VAR(i64(x));
|
||||
if(args[1] == vm->None) return x >= 0 ? VAR((i64)(x + 0.5)) : VAR((i64)(x - 0.5));
|
||||
int ndigits = CAST(int, args[1]);
|
||||
if(ndigits == 0){
|
||||
if(is_int(args[0])) return x >= 0 ? VAR((i64)(x + 0.5)) : VAR((i64)(x - 0.5));
|
||||
else return x >= 0 ? VAR(f64((i64)(x + 0.5))) : VAR(f64((i64)(x - 0.5)));
|
||||
}
|
||||
if(ndigits == 0) return x >= 0 ? VAR(f64((i64)(x + 0.5))) : VAR(f64((i64)(x - 0.5)));
|
||||
if(ndigits < 0) vm->ValueError("ndigits should be non-negative");
|
||||
if(x >= 0){
|
||||
return VAR((i64)(x * std::pow(10, ndigits) + 0.5) / std::pow(10, ndigits));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user