It seems you have your terminology mixed up. What you’re calling “signed” numbers are actually called fractional numbers.
So what you’re really asking for is a datatype that hold values that are both fractional and negative. The double
type can do just that.
solved how to store negative floating-point numbers in C