Symbian 的 sprintf 函数对 “%f” 浮点数格式化不正常?

在测试工程使用了 sprintf 函数,结果发现 %f 行为不正常。
多数时候输出的时候,字符串里面都有不止一个小数点(或者是逗号,我视力不好看不清 :-s)。和想要的只有一个小数点的期望相差太远。
Nokia的论坛上找了一下,好像没有这个问题。有人通过 LC_ALL 来设置,不过我试了没有效果。
只好自己做了一下包装,将浮点数分为整数和小数两个部分处理,然后再拼接起来。

  1. std::string floattostr( double d )
  2. {
  3.  char buf[30];
  4. #ifdef OS_SYMBIAN
  5.  // 整数部分
  6.  int i = d;
  7.  sprintf (buf, "%d",i);
  8.  // 小数部分
  9.  double f = d - i;
  10.  char buf1[30];
  11.  sprintf(buf1, "%.6f",f);
  12.  // 做拼接
  13.  strcat(buf, &(buf1[1]));
  14. #else
  15.  sprintf(buf, "%f", d);
  16. #endif
  17.  return buf;
  18. }

Popularity: 4% [?]

Related

Comments

Comments are closed.