diff --git a/repl/lib_standard.c b/repl/lib_standard.c index 2b2966d..4514446 100644 --- a/repl/lib_standard.c +++ b/repl/lib_standard.c @@ -349,8 +349,8 @@ static int nativeRound(Toy_Interpreter* interpreter, Toy_LiteralArray* arguments } if (TOY_IS_FLOAT(selfLiteral)) { //catch the already-rounded case - if (TOY_AS_FLOAT(selfLiteral) == 0) { - result = selfLiteral; + if (TOY_AS_FLOAT(selfLiteral) == (int)TOY_AS_FLOAT(selfLiteral)) { + result = TOY_TO_INTEGER_LITERAL((int)TOY_AS_FLOAT(selfLiteral)); } else { result = TOY_TO_INTEGER_LITERAL( TOY_AS_FLOAT(selfLiteral) - (int)TOY_AS_FLOAT(selfLiteral) < 0.5 ? (int)TOY_AS_FLOAT(selfLiteral) : (int)TOY_AS_FLOAT(selfLiteral) + 1 ); diff --git a/test/scripts/lib/standard.toy b/test/scripts/lib/standard.toy index bf7d95e..8d64d36 100644 --- a/test/scripts/lib/standard.toy +++ b/test/scripts/lib/standard.toy @@ -96,6 +96,8 @@ import standard; var x = 4.1; assert x.round() == 4, "var.round() failed"; + + assert typeof round(1.0) == int, "typeof round() == int failed"; }