Time to rescale.
S = 1e18;
x = S*[5.13e-19 5.55e-19 5.9e-19 6.370e-19 6.77e-19];
y = [40.40 39.97 39.21 38.67 38.75];
A = [x(:),ones(length(x),1)];
[u,std_u] = lscov(A,y(:))
In terms of the rescaled x you get a good result.
The problem being solved is basically ux = y, or (u/S)(Sx) = y. So for the rescaled problem, u -> u/S.
To get back to the original problem you have to multiply the rescaled u by S. But since only the first column of A was rescaled, only the first element of u and std_u have to be changed. Then
u(1) = -1.1156e+19 (original)
u(2) = 46.0310
std_u(1) = 2.0929e+18
std_u(2) = 1.2499
Lots of scale factors that are within a few powers of 10 of S=1e19 are possible, and they don't change the 'original' results above (by any significant amount). But all in all, it makes at least as much sense to stay with the rescaled problam, because then the elements of u and std_u are of comparable size. I used a scale factor of 1e18 instead of 1e19 because for example if x were in meters, then the rescaled x is in the SI unit of attometers.