将float / double转换为字符串的高效函数

时间:2009-10-12 23:40:38

标签: c string performance floating-point

目前,我所知道的唯一功能是_snprintf_s,如下所示

double dMyValue = <some value>;
_snprintf_s(pszMyBuffer, sizeof(pszMyBuffer), 12, "%.10f", dMyValue);

2 个答案:

答案 0 :(得分:1)

看起来您正在使用Visual C ++。还有_fcvt_s_ecvt_s_gcvt_s。与_snprintf_s的主要区别在于它们不解析格式字符串,因此它们应该更有效率。 C运行时库函数通常都经过精心调整,因此您可能不会出错任何错误。

答案 1 :(得分:1)

如果您碰巧知道该值限制在某个范围内,您可能可以击败内置功能。例如:

if (v < 0){
  strcat(s, "-"); s++;
  v = -v;
}
double di = floor(v);
double frac = v - di;
int i = (int)di;
int f = (int)floor(frac * 1e10);
strcat(s, itoa(i)); s += strlen(s);
strcat(s, "."); s++;
strcat(s, itoa(f)); s += strlen(s);

但是我打赌你有更大的鱼可以在其他地方煎炸。