Force Fields and units
Atomic units are the standard in almost any ab-initio (LAMMPS, NWChem, Orca, QChem) and/or classical force field (LAMMPS, MPMC, CHARMM, AMBER, GROMACS etc.) modeling code because you end up computing numbers much closer to 1.

Things can get bad very quickly for small values in python. To prevent this, I would use atomic units, and wherever arithmetic error occurs, try using the decimal type, instead of default float, via float -> string -> decimal:

from decimal import *

energy = Decimal(str(3.4280284e-19))

Here is a sample file I've used for atomic units in python:

pi = 3.14159265359
kb = 1.38064852e-23 # boltzmann / J/K
ab = 5.2917721092e-11 # bohr radius / meters
hbar = 1.054571726e-34 # planck / Js
h = hbar*2*pi
me = 9.10938291e-31 # electron rest mass / kg
e = 1.602176565e-19 # electron charge / C
ke = 8.9875517873681e9 # coulomb constant / kgm^3 s^-2 C^-2
Eh = 4.35974417e-18 # hartree energy / J
c = 299792458 # speed of light, m/s
cs = 340.29 # speed of sound, m/s
t = hbar / Eh # time / s
v = ab*Eh/hbar # velocity m/s
F = Eh/ab #force
T = Eh/kb # temp
P = Eh/(ab**3) # pressure
Ef = Eh/(e*ab) # electric field
Ep = Eh/e # electric potential
u = e*ab # electric dipole moment