Symbian 的 sprintf 函数对 “%f” 浮点数格式化不正常?
在测试工程使用了 sprintf 函数,结果发现 %f 行为不正常。
多数时候输出的时候,字符串里面都有不止一个小数点(或者是逗号,我视力不好看不清 :-s)。和想要的只有一个小数点的期望相差太远。
Nokia的论坛上找了一下,好像没有这个问题。有人通过 LC_ALL 来设置,不过我试了没有效果。
只好自己做了一下包装,将浮点数分为整数和小数两个部分处理,然后再拼接起来。
-
std::string floattostr( double d )
-
{
-
char buf[30];
-
#ifdef OS_SYMBIAN
-
// 整数部分
-
int i = d;
-
sprintf (buf, "%d",i);
-
// 小数部分
-
double f = d - i;
-
char buf1[30];
-
sprintf(buf1, "%.6f",f);
-
// 做拼接
-
strcat(buf, &(buf1[1]));
-
#else
-
sprintf(buf, "%f", d);
-
#endif
-
return buf;
-
}
Popularity: 4% [?]