Arduino uses 32 bit only floating point done in software. There is no FPU and the precision is 6 digits. It gets lossier when intermediate results are wider than that 6 digits.
You can 9 digits using 32 bit integers, long and unsigned long, and 19 digits with long long and unsigned long long.
Either of those is way faster and more accurate than floats on Arduino.
But you can do more! BCD, Binary Coded Decimal uses 4 bits per digit (ran on 4 bit machines), 2 digits per byte to not just run displays but to run decimal calculations on whole strings of digits. With enough buffer you can attain absolute accuracy to arbitrary precision and just likely maybe do it faster than Arduino floating point, depending on how insanely many digits you push it, 128 places would require processing 64 bytes in very simple ways.
I wonder if there's a BCD-w/exponents library? 8 digit exponent and 120 places accuracy? That'd be something for numberphiles, coding in decimal shortcuts. If I'm adding 123 to 987654321, I only have to change 3 digits.
Wrong there are no float issue ti works a per spec. You have a problem with with way computers handle numbers (int and float) the problem is in your head!.
x = x*10.0; // value should be -1125, but I am getting -1124.8
3 things
floats are never precise they are all ways approximations.
don't use - unless you mean -ve
3 Never use == with floats or reals of any kind
y = x; // I would like to see -1125, but I see -1124
Casting to in ALWAYS rounds down as does division with ints.
floats are never precise they are all ways approximations.
They are not always approximations. Integers such as 123 and -112 are represented exactly in floating point. Fractions such as .5, .25, .3125 are also represented exactly in floating point and -112.5 is also exactly represented.