Underflow occurs when the result of an arithmetic operation is smaller than the smallest value that can be represented by the type specified.
For integers, this would mean either a number less than 0 if the integer is unsigned or a very large negative number if the integer is signed (for instance, -2 is smaller than -1).
For real numbers, this would be a number very, very close to zero (that is, an extremely small fractional part), resulting from the division of an extremely small number by a very large number, or the multiplication of two extremely small numbers.