2010-07-18 67 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