133 {
134 if (precision < 0) {
135
137 stream << value;
139 }
140
141
142
143 if (precision == 0) {
144 int int_part = static_cast<int>(value + 0.5f);
146 stream << int_part;
148 }
149
150
151 int multiplier = 1;
152 for (int i = 0; i < precision; ++i) {
153 multiplier *= 10;
154 }
155
156 int scaled = static_cast<int>(value * multiplier + 0.5f);
157 int int_part = scaled / multiplier;
158 int frac_part = scaled % multiplier;
159
160 StrStream stream;
161 stream << int_part;
162 stream << ".";
163
164
165 int temp_multiplier = multiplier / 10;
166 while (temp_multiplier > frac_part && temp_multiplier > 1) {
167 stream << "0";
168 temp_multiplier /= 10;
169 }
170 if (frac_part > 0) {
171 stream << frac_part;
172 }
173
175}
const string & str() const