Ok, after some reading, thinking and coding i now have this one (attached)

Summary: there are two methods you can go:

1.) round to a total # of digits

make mantissa an integer by fmul/fdiv 10^exp-> round mantissa (fdiv, frndint, fmul) + restore

In case of floats beyond 10^18 rounding to decimal places after decimal point doesn´t make sense in FPU, because such numbers require more than 19 digital places in total, the original number is just returned. It doesn´t do any harm, but it also has no effect!!! In scientific format there is always one digit before the decimal point and all the rest after it, you can round these numbers to a total number of digits.

2.) round to a # of places after the decimal point

round mantissa (fmul, frndint, fdiv)

This works works only in integer range (19 digits in total = 10^18), in this range rounding to decimal digits after decimal point is possible respecting the FPU´s internal accuracy of 19 digits, i.e. 1234567890.xxxx... can be rounded to a max of 8 decimal places. In case of "overflow" (digits before decimal point + digits to round to > 18) rounding is done as far as possible, numbers beyond 10^18 are returned unchanged.

Please tell me, if there are problems or errors

JK