#include <iostream>
#include <iomanip>
#include <sstream>
class MyFloat
{
public:
MyFloat(float val = 0) : _val(val)
{}
friend std::ostream& operator<<(std::ostream& os, const MyFloat& rhs)
{ os << MyFloat::noLeadingZero(rhs._val, os); }
private:
static std::string noLeadingZero(float val, std::ostream& os)
{
std::stringstream ss;
ss.copyfmt(os);
ss << val;
std::string str = ss.str();
if(val > 0.f && val < 1.f)
return str.substr(1, str.size()-1);
else if(val < 0.f && val > -1.f)
return "-" + str.substr(2, str.size()-1);
return str;
}
float _val;
};
int main()
{
std::cout << "Value: " << std::setw(2) << std::setprecision(1);
std::cout << std::fixed << MyFloat(0.357765);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHNzdHJlYW0+CgpjbGFzcyBNeUZsb2F0CnsKcHVibGljOgogICAgTXlGbG9hdChmbG9hdCB2YWwgPSAwKSA6IF92YWwodmFsKQogICAge30KCiAgICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IE15RmxvYXQmIHJocykKICAgIHsgb3MgPDwgTXlGbG9hdDo6bm9MZWFkaW5nWmVybyhyaHMuX3ZhbCwgb3MpOyB9Cgpwcml2YXRlOgogICAgc3RhdGljIHN0ZDo6c3RyaW5nIG5vTGVhZGluZ1plcm8oZmxvYXQgdmFsLCBzdGQ6Om9zdHJlYW0mIG9zKQogICAgewogICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwogICAgICAgIHNzLmNvcHlmbXQob3MpOwogICAgICAgIHNzIDw8IHZhbDsKICAgICAgICBzdGQ6OnN0cmluZyBzdHIgPSBzcy5zdHIoKTsKCiAgICAgICAgaWYodmFsID4gMC5mICYmIHZhbCA8IDEuZikKICAgICAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoMSwgc3RyLnNpemUoKS0xKTsKICAgICAgICBlbHNlIGlmKHZhbCA8IDAuZiAmJiB2YWwgPiAtMS5mKQogICAgICAgICAgICByZXR1cm4gIi0iICsgc3RyLnN1YnN0cigyLCBzdHIuc2l6ZSgpLTEpOwoKICAgICAgICByZXR1cm4gc3RyOwogICAgfQogICAgZmxvYXQgX3ZhbDsKfTsKCmludCBtYWluKCkKewoJc3RkOjpjb3V0IDw8ICJWYWx1ZTogIiA8PCBzdGQ6OnNldHcoMikgPDwgc3RkOjpzZXRwcmVjaXNpb24oMSk7CglzdGQ6OmNvdXQgPDwgc3RkOjpmaXhlZCA8PCBNeUZsb2F0KDAuMzU3NzY1KTsKCQoJcmV0dXJuIDA7CQp9