XSLT 1.0 numbers are double-precision floating point, so they are held accurately to about 16 decimal places.
If you want higher precision you could use XSLT 2.0 which offers integer and decimal data types. The precision of these is implementation-defined (ewith an 18 digit minimum) but you can choose an implementation such as Saxon which offers infinite precision.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference