我必须使用非科学(即没有尾数/指数/E)字符串转换十进制数。我的代码如下所示:
/*!
\brief Converts a <em>XML Schema Decimal</em>
*/
char *ToDecimal(double val) const
{
const size_t nMax = 200;
char *doubleStr = new char[nMax];
sprintf(doubleStr, "%1.6f", val);
return doubleStr;
}
问题是当输入val是1函数返回时1.000000,但我希望输出1. 另外,如果我将代码更改为,sprintf(doubleStr, "%1.0f", val);那么它会正确输出1,但如果输入val更改为0.000005输出0,我希望输出会是0.000005。所以基本上我希望所有输出尽可能短并删除所有不必要0的。这可能sprintf吗?我想用这个功能支持 3.4E +/- 38 范围。