convert error: 'Int' to 'IntLiteral' trying to implement the FloatLiteral.__round__(ndigits) method
I'm trying to contribute implementing the FloatLiteral.round() method with the current implementation:
@always_inline("nodebug") fn __round__(self, ndigits: IntLiteral = 0) -> Self: """Return the rounded value of the FloatLiteral. Args: ndigits: The number of digits to round to. Defaults to 0. Returns: The rounded value. """ # Handle special values first. if not self._is_normal(): return self var pow: IntLiteral = 10 ** ndigits var to_round: Self = self * Self(pow) var truncated: IntLiteral = to_round.__int_literal__() var result: Self if self.__abs__() - Self(truncated).__abs__() < 0.5: result = Self(truncated) elif self > 0: result = Self(truncated + 1) else: result = Self(truncated - 1) if ndigits > 0: result = result / (Self(10.0) ** ndigits) return result
@always_inline("nodebug") fn __round__(self, ndigits: IntLiteral = 0) -> Self: """Return the rounded value of the FloatLiteral. Args: ndigits: The number of digits to round to. Defaults to 0. Returns: The rounded value. """ # Handle special values first. if not self._is_normal(): return self var pow: IntLiteral = 10 ** ndigits var to_round: Self = self * Self(pow) var truncated: IntLiteral = to_round.__int_literal__() var result: Self if self.__abs__() - Self(truncated).__abs__() < 0.5: result = Self(truncated) elif self > 0: result = Self(truncated + 1) else: result = Self(truncated - 1) if ndigits > 0: result = result / (Self(10.0) ** ndigits) return result
But I'm receiving the
error: cannot implicitly convert 'Int' value to 'IntLiteral' in 'var' initializer
error: cannot implicitly convert 'Int' value to 'IntLiteral' in 'var' initializer
in the
var pow: IntLiteral = 10 ** ndigits
var pow: IntLiteral = 10 ** ndigits
line If I change the type to from
IntLiteral
IntLiteral
to
Int
Int
this will move the error to the following line, the