Avoid inaccurate floating-point computations

...otherwise at least my --disable-dbgutil --disable-debug Linux x86_64 build
failed the CppunitTest_sax_cpputest with 8999999 vs. 9000000 nanoseconds.

(cherry picked from commit 695671eb18674ea58103093b9cf31a31afe8d2fd,
incorporating follow-up fixes 71448690d7c5904df45bf98243c5bb05a99245e5
"readUnsignedNumberMaxDigits can read more than maxDigits chars" and
b9bcc9c5c10841dcdfa9ff5814344ce667678df3 "...and nDigits > 9 is harmless in
following for loop and need not be capped")

Change-Id: I05e0febf413f9f9e01227a0cc4e0f46a5243fe61