2010-07-18 65 views
2

这是一个非常简单的C问题。简单的C数字格式化

有没有办法为printf格式化浮点数,使其具有xx重要的小数?

所以我不是在谈论,说,%5.3f浮动,但如果我

float x=0.00001899383 

我怎么会输出0.0000189,如果我想高达前三非零小数?

+1

需要注意的是你的榜样号码3个显著数字为0.0000190 – caf 2010-07-19 00:37:55

回答

10

“%.3g”会尝试输出三位有效数字,无论是科学还是固定格式。

在BJG:

程序

#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.00
0.0
0.
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 
+0

但不会与非零成交问题的一部分。这将只是格式的前3位数字,无论 – bjg 2010-07-18 16:23:36

+3

@bjg,不,它会打印3 **重要的**数字,但将使用指数表示法,如果有多个前导零.. – 2010-07-18 16:25:43

+0

@R ..我的坏。我立场纠正。 – bjg 2010-07-18 16:50:46