In documentaion of kotlin has mistake. Concepts>Types>Basic types>Numbers. There is an error in the table where the minimum and maximum sizes of types are indicated. The minimum size of a long type is -9_223_372_036_854_775_807 rather than -9_223_372_036_854_775_808.
Using the JVM documentation:
A constant holding the minimum value a
long
can have, -2^63
-2^63 = -9_223_372_036_854_775_808
In the Kotlin builtins:
public class Long private constructor() : Number(), Comparable<Long> {
companion object {
/**
* A constant holding the minimum value an instance of Long can have.
*/
public const val MIN_VALUE: Long = -9223372036854775807L - 1L
It is written in this way because of some weirdness around -
being an operator that applies to a literal value and not part of the definition of a literal value itself, but regardless it still results in the same number: -9_223_372_036_854_775_808.
In fact, one can verify this simply by making Kotlin print out the answer!
fun main() {
println(Long.MIN_VALUE)
}
1 Like
Oh thanks, I got it, the minimum constant where Long doesn’t break is -9223372036854775807L - 1L, after (if 2^63L - 2L) there will be a positive number 9223372036854775807