#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <limits>
using namespace std;
int main( ) {
const float x = 10.0000095 ;
const float y = 10.0000105 ;
// Default precision
{
stringstream def_prec;
// Write to string
def_prec << x << " " << y;
// What was written ?
cout << def_prec.str ( ) << endl;
// Read back
float x2, y2;
def_prec>> x2 >> y2;
// Check
printf ( "%.8f vs %.8f\n " , x, x2) ;
printf ( "%.8f vs %.8f\n " , y, y2) ;
}
cout << endl;
// Using max_digits10
const int digits_max = numeric_limits< float > :: max_digits10 ;
{
stringstream max_prec;
max_prec << setprecision( digits_max) << x << " " << y;
// What was written ?
cout << max_prec.str ( ) << endl;
// Read back
float x2, y2;
max_prec>> x2 >> y2;
// Check
printf ( "%.8f vs %.8f\n " , x, x2) ;
printf ( "%.8f vs %.8f\n " , y, y2) ;
}
cout << endl;
{
stringstream some_prec;
some_prec << setprecision( digits_max- 1 ) << x << " " << y;
// What was written ?
cout << some_prec.str ( ) << endl;
// Read back
float x2, y2;
some_prec>> x2 >> y2;
// Check
printf ( "%.8f vs %.8f\n " , x, x2) ;
printf ( "%.8f vs %.8f\n " , y, y2) ;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxsaW1pdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWNvbnN0IGZsb2F0IHggPSAxMC4wMDAwMDk1OwoJY29uc3QgZmxvYXQgeSA9IDEwLjAwMDAxMDU7CgkKCS8vIERlZmF1bHQgcHJlY2lzaW9uCgl7CgkJc3RyaW5nc3RyZWFtIGRlZl9wcmVjOwoJCQoJCS8vIFdyaXRlIHRvIHN0cmluZwoJCWRlZl9wcmVjIDw8IHggPDwiICI8PHk7CgkJCgkJLy8gV2hhdCB3YXMgd3JpdHRlbiA/CgkJY291dCA8PGRlZl9wcmVjLnN0cigpPDxlbmRsOwoJCQoJCS8vIFJlYWQgYmFjawoJCWZsb2F0IHgyLCB5MjsKCQlkZWZfcHJlYz4+eDIgPj55MjsKCQkKCQkvLyBDaGVjawoJCXByaW50ZigiJS44ZiB2cyAlLjhmXG4iLCB4LCB4Mik7CgkJcHJpbnRmKCIlLjhmIHZzICUuOGZcbiIsIHksIHkyKTsKCX0KCQoJY291dDw8ZW5kbDsKCQoJLy8gVXNpbmcgbWF4X2RpZ2l0czEwCgljb25zdCBpbnQgZGlnaXRzX21heCA9IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4X2RpZ2l0czEwOwoJewoJCXN0cmluZ3N0cmVhbSBtYXhfcHJlYzsKCQltYXhfcHJlYyA8PCBzZXRwcmVjaXNpb24oZGlnaXRzX21heCkgPDwgeCA8PCIgIjw8eTsKCQkvLyBXaGF0IHdhcyB3cml0dGVuID8KCQljb3V0IDw8bWF4X3ByZWMuc3RyKCk8PGVuZGw7CgkJCgkJLy8gUmVhZCBiYWNrCgkJZmxvYXQgeDIsIHkyOwoJCW1heF9wcmVjPj54MiA+PnkyOwoJCQoJCS8vIENoZWNrCgkJcHJpbnRmKCIlLjhmIHZzICUuOGZcbiIsIHgsIHgyKTsKCQlwcmludGYoIiUuOGYgdnMgJS44ZlxuIiwgeSwgeTIpOwoJfQoJCgljb3V0PDxlbmRsOwoJCgl7CgkJc3RyaW5nc3RyZWFtIHNvbWVfcHJlYzsKCQlzb21lX3ByZWMgPDwgc2V0cHJlY2lzaW9uKGRpZ2l0c19tYXgtMSkgPDwgeCA8PCIgIjw8eTsKCQkvLyBXaGF0IHdhcyB3cml0dGVuID8KCQljb3V0IDw8c29tZV9wcmVjLnN0cigpPDxlbmRsOwoJCQoJCS8vIFJlYWQgYmFjawoJCWZsb2F0IHgyLCB5MjsKCQlzb21lX3ByZWM+PngyID4+eTI7CgkJCgkJLy8gQ2hlY2sKCQlwcmludGYoIiUuOGYgdnMgJS44ZlxuIiwgeCwgeDIpOwoJCXByaW50ZigiJS44ZiB2cyAlLjhmXG4iLCB5LCB5Mik7Cgl9Cgp9