- char value[32];
- // XXX: I want this to print 1e3 rather than 1000
- sprintf(value, "%.17g", Value());
- out << value;
+ std::ostringstream str;
+ CYNumerify(str, Value());
+ std::string value(str.str());
+ out << value.c_str();
+ // XXX: this should probably also handle hex conversions and exponents
+ if ((flags & CYNoInteger) != 0 && value.find('.') == std::string::npos)
+ out << '.';