In python, 0.3 prints as 0.3, but it's a double, so it should be 0.299999999999999988897769753748434595763683319091796875 (according to the article, and the 0.1+0.2 != 0.3 trick also works) What controls this rounding? e.g., in an interactive python prompt i get: >>> b = 0.299999999999999988897769753748434595763683319091796875 >>> b 0.3
>>> f'{b:.54f}'
0.299999999999999988897769753748434595763683319091796875
>>> f'{x:.16g}'
0.3
>>> f'{x:.17g}'
0.29999999999999999