我必须使用非科学(即没有尾数/指数/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 范围。