# How to round a number

Hello,
Is it possible to round a number to the amount of digit it has.

import math

a = 984.59

x = round(a - math.floor(a) , 2)

print(x)

In this code i have to say how man digits it has to round. But let’s say i want the code to give me the fractal of 984.59201 which would be 0.59201 without to change anything else. Is there a funtcion to do this.

Possibly, you could use the `divmod()` function in some way:

``````x = 984.59201

n, r = divmod(x, 1)
print(n, r)
``````
``````output
984.0 0.5920099999999593
``````

… or rather the output from said, least ways.

If you wanted a floating point number with the same number of digits as the input:

``````x = 984.59201

_, dp = str(x).split('.')

n, r = divmod(x, 1)

xr = float(f"{r:.{len(dp)}f}")

print(xr)
``````
``````output
0.59201
``````

… although I’d guess that there could be a more concise way to do this, but without using any dependencies, that’s how I would do it and I’d have that coded into a function.

``````x = 984.59201

x1, x2 = str(x).split('.')

output = float('.' + x2)

print(output)
``````
``````output
0.59201
``````

Hacking the string rep is not required.

You can ask for the formatting of the float to limit the precision.

``````print(‘%.2f’ % float_value)
``````

Indeed, but my approach was on the assumption that the ‘number’ was needed in a particular format, rather than to simply format the ‘displayed number’, but I could be wrong.

Either use float functions to limit the precision or format at limited precision.
Going via strings seem unnecessary.

That’s simply the modulo operator:

``````In : 984.59201 % 1
Out: 0.5920099999999593
``````

works for values other than 1, too:

``````In : 984.59201 % 10
Out: 4.592009999999959

In : 984.59201 % .1
Out: 0.09200999999990464
``````

or you can do this:

``````In : x - math.floor(x)
Out: 0.5920099999999593

or

In : x - int(x)
Out: 0.5920099999999593
``````