Our website uses cookies to enhance your browsing experience.
Accept
to the top
>
>
>
V6130. Integer overflow in...
menu mobile close menu
Additional information
toggle menu Contents

V6130. Integer overflow in arithmetic expression.

May 26 2025

The analyzer has detected an arithmetic operation that may result in an integer overflow.

The example:

private static long parseHumanLong(String str) {
    char tail = str.charAt(str.length() - 1);
    long base = 1;
    switch (tail) {
        case 't':
            base *= 1000 * 1000 * 1000 * 1000;
            break;
        case 'b':
            base *= 1000 * 1000 * 1000;
            break;
        case 'm':
            base *= 1000 * 1000;
            break;
        case 'k':
            base *= 1000;
            break;
        default:
    }
    if (base != 1) {
        str = str.substring(0, str.length() - 1);
    }
    return Long.parseLong(str) * base;
}

This method reads numbers and converts their suffixes to:

  • t – trillion;
  • b – billion;
  • m – million;
  • k – thousand.

If the 1m string is passed to the method, it is expected to be converted to the long variable with the 1_000_000 value.

When calculating trillions in the 1000 * 1000 * 1000 * 1000 expression, the multiplication is performed within the int range, but the resulting number exceeds the maximum value for the int type. This results in the overflow and incorrect result.

To evaluate the expression correctly, explicitly specify the Long type for it.

base *= 1000L * 1000 * 1000 * 1000;

This diagnostic is classified as: