1

I want convert a number to a float number with 3 decimal point but I want it without rounding. For example:

a = 12.341661
print("%.3f" % a)

This code return this number:

12.342

but I need to original number,I need this:

12.341

I write a code that receive a number form user and convert it to a float number. I have no idea that what is the number entered with user.

Mehran sanea
  • 13
  • 1
  • 5

2 Answers2

6

My first thought was to change print("%.3f" % a) to print("%.3f" % (a-0.0005)) but it does not quite work: while it outputs what you want for a=12.341661, if a=12.341 it outputs 12.340, which is obviously not right.

Instead, I suggest doing the flooring explicitly using int():

a = 12.341661
b = int(a*1000)/1000.
print(b)

This outputs what you want:

12.341

To get 3 decimals out even if the input has fewer, you can format the output:

a = 3.1
b = int(a*1000)/1000.
print("%.3f" % b)

Outputs:

3.100
joanis
  • 10,635
  • 14
  • 30
  • 40
0

try str and slicing

a = 12.341661
b = str(int(a))
c = str(a - int(a))[1:5]
d = b + c
print(d)