Working with negative numbers from a serial read string

It's not criticism.

The use if the String class in an Arduino is often a recipe for difficult to trace problems. Using character arrays is a far more solid approach.

Further parseFloat is a blocking function (something one usually tries to prevent) and any hick ups in communication might make it convert incorrectly.

Your code should basically first read a full message and next parse it. Robin2's second example might do for the reading. One of the examples uses atoi() to convert a number to an integer; to convert floats, you can use atof().