You have to understand, that all the automatic methods, be it adaptive sampling, labeling, etc, work in most cases, but it is always possible to break them. This can happen when you are plotting very small values or very large one or when your function has very small features. For those cases, you can often manually adjust the settings.
For the ticks you have several options. First, you can set them manually to any label you like
Plot[Exp[x], {x, 1 - 10^-9, 1},
Ticks -> {{{999999999/1000000000, "close to 1"},
{1499999999/1500000000, "very close to 1"},
{2999999999/3000000000, "even closer to 1"},
{1, "finally 1"}},
Automatic}]

Here, the strings I used can be any representation of the values you like. Furthermore, you can use a function which takes xmin
and xmax
of your plotting interval and gives back a list of tick information
tickfunc[xmin_, xmax_] :=
Table[{x, NumberForm[x, 10]}, {x, xmin, xmax, (xmax - xmin)/4}]
Plot[Exp[x], {x, 1 - 10^-9, 1}, Ticks -> {tickfunc, Automatic}]

There are some more options and you can look at the documentation for Ticks
to find out more. Finally, you could post-process an existing plot, by extracting the created Ticks
and adjust them. With AbsoluteOptions
you can extract the given Ticks
of a Graphics
and then it is simple replacement
gr = Plot[Exp[x], {x, 1 - 10^-9, 1}];
gr /. Graphics[blub__] :>
Graphics[blub,
First[(AbsoluteOptions[gr,
Ticks] /. {a_Real, b_, rest___} :> {a,
Rotate[Text[NumberForm[b, 10]], Pi/8], rest})]]
Note that you have to be a bit creative here, since otherwise the long numbers won't fit in the given place. Therefore, I rotated the labels a bit.
