home *** CD-ROM | disk | FTP | other *** search
- /*[]------------------------------------------------------------[]*/
- /*| |*/
- /*| istedbl.cpp |*/
- /*| |*/
- /*| Class istream |*/
- /*| istream& istream::operator>> ( double& ) |*/
- /*| |*/
- /*[]------------------------------------------------------------[]*/
-
- /*
- * C/C++ Run Time Library - Version 5.0
- *
- * Copyright (c) 1990, 1992 by Borland International
- * All Rights Reserved.
- *
- */
-
- #include <ioconfig.h>
- #include <iostream.h>
- #include <float.h> // for characteristics of floating types
- #include <errno.h> // for reporting range errors
-
-
-
- /*
- * We assume that extracting a long double and casting to double is not
- * significantly more expensive than working only with doubles.
- */
- istream _FAR & istream::operator>> (double _FAR & d)
- {
- long double x;
-
- *this >> x; // extract the value
- if( ! fail() )
- { // value returned only if no failure
- if( x < -DBL_MAX )
- {
- errno = ERANGE;
- x = -DBL_MAX;
- }
- else if( DBL_MAX < x )
- {
- errno = ERANGE;
- x = DBL_MAX;
- }
- else
- d = double(x);
- }
- return *this;
- }
-
-
-