The main algorithm that does not accept input in the form 1.2e-4:
(1) Read the integer before the dot. If the number of digits is> 16 (normal precision double), convert that integer to a floating point directly and return.
(2) 16 . ( ) ; 10 . (1) .
2 : + & divide;, . 10 , .
( 16- , 64- int.)
sscanf(str, "%lf", ...), std::istringstream boost::lexical_cast<double>.