The purpose of this book is to explain in detail the sources of error in floating-point programming and how their effects can be controlled. The emphasis reflects that of the Diamond Esprit project from which the book was derived in that much of the work reported relates to the explotation of the Karlsruhe Accurate Arithmetic, an alternative to conventional floating-point arithmetic exhibiting improved error behaviour. The overall outline of the book is first to explain the basic features of floating-point arithmetic and then to illustrate many different kinds of work that have been undertaken to improve the accurancy of floating-point programming, concentrating on those which are relevant to the exploitation of the Karlsruhe Accurate Arithmetic. Conventional numerical analysis - which deals with the development of numerical algorithms to solve specific mathematical problems - is not really within the scope of the book, although some of the later chapters of the book are concerned with the development of numerical algorithms that provide results of guaranteed accuracy.