#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;	
}