0

I'm converting from all units of time to seconds and for some reason with the smaller units of time (picoseconds and femtoseconds), i'm getting (femtoseconds): 0.00000000000000100000000000000007770539987666107923830718560119501514549256171449087560176849365234375 instead of 0.000000000000001. Does anyone know why?

days = int(input("Enter the amount of days: ")) * 24 * 60 * 60
hours = int(input("Enter the amount of hours: ")) * 60 * 60
minutes = int(input("Enter the amount of minutes: ")) * 60
ms = int(input("Enter the amount of milliseconds: ")) * (10 ** -3)
mcs = int(input("Enter the amount of microseconds: ")) * (10 ** -6)
ns = int(input("Enter the amount of nanoseconds: ")) * (10 ** -9)
ps = int(input("Enter the amount of picoseconds: ")) * (10 ** -12)
fs = int(input("Enter the amount of femtoseconds: ")) * (10 ** -15)

s = days + hours + minutes + ms + mcs + ns + ps + fs
print("The amount of seconds is:", "{0:.50}".format(s))

1 Answers1

2

Floating point numbers cannot be accurately represented in any programming language, simply because there is an infinite number of them. However, what might help you is Decimal: Clarification on the Decimal type in Python

Documentation: https://docs.python.org/3.8/library/decimal.html

Luka Mesaric
  • 657
  • 6
  • 9