home *** CD-ROM | disk | FTP | other *** search
- /*[]------------------------------------------------------------[]*/
- /*| |*/
- /*| isteflt.cpp |*/
- /*| |*/
- /*| Class istream |*/
- /*| istream& istream::operator>> ( float& ) |*/
- /*| |*/
- /*[]------------------------------------------------------------[]*/
-
- /*
- * 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 float is not
- * significantly more expensive than working only with floats.
- */
- istream _FAR & istream::operator>> (float _FAR & f)
- {
- long double x;
-
- *this >> x; // extract the value
- if( ! fail() )
- { // value returned only if no failure
- if( x < -FLT_MAX )
- {
- errno = ERANGE;
- f = -FLT_MAX;
- }
- else if( FLT_MAX < x )
- {
- errno = ERANGE;
- f = FLT_MAX;
- }
- else
- f = float(x);
- }
- return *this;
- }
-
-
-