Question: Currently I am trying to solve a problem, where I am supposed to print the answer upto two decimal points without rounding off. I have used the below code for this purpose import math a=1.175 #value of a after some division print(math.floor(a*100)/100)  The output we get is: 1.17 #Notice value which has two decimal points & not rounded  But the real problem starts when I try to print a number which is evenly divisible, after the decimal point only one zero is displayed. I have used the same code as above, but now a=25/5 #Now a is perfectly divisible print(math.floor(a*100)/100)  The output displayed now is 5.0 #Notice only one decimal place is printed  what must be done rectify this bug?

Answer: The division works and returns adequate precision in result. So your problem is just about visualization or exactly:  string-representation of floating-point numbers  Formatting a decimal You can use string-formatting for that. For example in Python 3, use f-strings: twoFractionDigits = f"{result:.2f}" or print(f"{result:.2f}") The trick does .2f, a string formatting literal or format specifier that represents a floating-point number (f) with two fractional digits after decimal-point (.2). See also:  Fixed digits after decimal with f-strings How to format a floating number to fixed width in Python  Try on the Python-shell: Python 3.6.9 (default, Dec 8 2021, 21:08:43) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import math >>> a=1.175 #value of a after some division >>> result = math.floor(a*100)/100 >>> result 1.17 >>> print(result) 1.17 >>> a=25/5 #Now a is perfectly divisible >>> result = math.floor(a*100)/100 >>> result 5.0 >>> print(result) 5.0 >>> print(f"{result:.2f}") 5.00  Formatting a decimal as percentage Similar you can represent the ratio as percentage: print(f"{result:.2f} %") prints:  5.00 %  A formatting shortcut for percentage can be: print(f"{25/100:.2%}") Which converts the result of 25/100 == 0.25 to:  25.00%  Note: The formatting-literal .2% automatically converts from ratio to percentage with 2 digits after the decimal-point and adds the percent-symbol. Formatting a decimal with specific scale (rounded or truncated ?) Now the part without rounding-off, just truncation. As example we can use the repeating decimal, e.g. 1/6 which needs to be either rounded or truncated (cut-off) after a fixed number of fractional digits - the scale (in contrast to precision). >>> print(f"{1/6:.2}") 0.17 >>> print(f"{1/6:.2%}") 16.67%  Note how the formatted string is not truncated (to 0.16) but rounded (to 0.17). Here the scale was specified inside formatting-literal as 2 (after the dot). See also:  Truncate to three decimals in Python How do I interpret precision and scale of a number in a database? What is the difference between precision and scale?  Formatting many decimals in fixed width (leading spaces) Another example is to print multiple decimals, like in a column as right-aligned, so you can easily compare them. Then use string-formatting literal 6.2f to add leading spaces (here a fixed-width of 6): >>> print(f"{result:6.2f}") 5.00 >>> print(f"{100/25*100:6.2f}") 400.00 >>> print(f"{25/100*100:6.2f}") 25.00  See also All the formatting-literals demonstrated here can also be applied using  old-style %-formatting (also known as "Modulo string formatting") which was inherited from printf method of C language. Benefit: This way is also compatible with Python before 3.6). new-style .format method on strings (introduced with Python 3)  See theherk's answer which demonstrates those alternatives. Learn more about string-formatting in Python:  Real Python: Python 3's f-Strings: An Improved String Formatting Syntax (Guide) Real Python: Python String Formatting Best Practices