【问题标题】:Simple C number formatting简单的 C 数字格式
【发布时间】:2010-07-18 16:16:13
【问题描述】:

这是一个非常简单的 c 问题。

有没有办法为 printf 格式化一个浮点数,使其具有 xx 位有效小数?

所以我说的不是%5.3f float,而是如果我有的话

float x=0.00001899383

如果我想要最多前三个非零小数,我将如何输出 0.0000189?

【问题讨论】:

  • 请注意,您的示例编号为 3 位有效数字为 0.0000190

标签: c formatting floating-point numbers printf


【解决方案1】:

"%.3g" 将尝试以科学或固定格式输出三位有效数字。

在北京:

程序

#include <stdio.h>

int main()
{
  double a = 123456789e-15;
  int i = 0;
  for( i=-10; i <= 10; ++i )
  {
    printf("%.3g\n", a );
    a *= 10;
  }
  return 0;
}

输出

1.23e-07
1.23e-06
1.23e-05
0.000123
0.00123
0.0123
0.123
1.23
12.3
123
1.23e+03
1.23e+04
1.23e+05
1.23e+06
1.23e+07
1.23e+08
1.23e+09
1.23e+10
1.23e+11
1.23e+12
1.23e+13

【讨论】:

  • 但这不会处理问题的非零部分。这只会格式化前 3 位数字
  • @bjg,不,它会打印 3 个 有效 位,但如果有多个前导零,将使用指数表示法..
  • 彼得,谢谢!我实际上只是在一个 Obj-C 应用程序中做几个 c 函数,并且已经忘记了这些东西很长时间了。就像杰米说的,+1 + +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多