#include <iostream>
#include <iomanip>
#include <sstream>
using namespace std;
std::string doubleToString(double f, int p)
{
std::stringstream ss;
int p2 = min(p + 2, 14);
ss << std::fixed << std::setprecision(p2) << f;
std::string s = ss.str();
size_t point = s.find('.');
if (point != std::string::npos && point + 1 + p < s.size())
s.erase(point + 1 + p);
s.erase(s.find_last_not_of('0') + 1, std::string::npos);
return (s[s.size()-1] == '.') ? s.substr(0, s.size()-1) : s;
}
int main() {
double test1 = 1;
double test2 = 1.12345678;
double test3 = 1.123456789010;
std::cout << doubleToString(test1, 8) << " " << doubleToString(test2, 8) << " " << doubleToString(test3, 8);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHNzdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdGQ6OnN0cmluZyBkb3VibGVUb1N0cmluZyhkb3VibGUgZiwgaW50IHApCnsKICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwogICAgaW50IHAyID0gbWluKHAgKyAyLCAxNCk7CiAgICBzcyA8PCBzdGQ6OmZpeGVkIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHAyKSA8PCBmOwogICAgc3RkOjpzdHJpbmcgcyA9IHNzLnN0cigpOwogICAgc2l6ZV90IHBvaW50ID0gcy5maW5kKCcuJyk7CiAgICBpZiAocG9pbnQgIT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYgcG9pbnQgKyAxICsgcCA8IHMuc2l6ZSgpKQogICAgCXMuZXJhc2UocG9pbnQgKyAxICsgcCk7CiAgICBzLmVyYXNlKHMuZmluZF9sYXN0X25vdF9vZignMCcpICsgMSwgc3RkOjpzdHJpbmc6Om5wb3MpOwogICAgcmV0dXJuIChzW3Muc2l6ZSgpLTFdID09ICcuJykgPyBzLnN1YnN0cigwLCBzLnNpemUoKS0xKSA6IHM7Cn0KCmludCBtYWluKCkgewoJZG91YmxlIHRlc3QxID0gMTsKCWRvdWJsZSB0ZXN0MiA9IDEuMTIzNDU2Nzg7Cglkb3VibGUgdGVzdDMgPSAxLjEyMzQ1Njc4OTAxMDsKCglzdGQ6OmNvdXQgPDwgZG91YmxlVG9TdHJpbmcodGVzdDEsIDgpIDw8ICIgIiA8PCBkb3VibGVUb1N0cmluZyh0ZXN0MiwgOCkgPDwgIiAiIDw8IGRvdWJsZVRvU3RyaW5nKHRlc3QzLCA4KTsKCXJldHVybiAwOwp9