2013-09-01 71 views
5

任何人都知道是否可以使用printf打印可變數字的數字?使用printf打印雙精度數字的可變數字

的代碼打印下面這行正是2:

printf("%.2lf", x); 

但讓我們說我有一個變量:

int precision = 2; 

是否有使用它在printf中指定的位數的方式?我不得不寫一個'switch'或'if'結構。

感謝

回答

8

這是可能的:

#include <stdio.h> 

int main() { 
    int precision = 3; 
    float b = 6.412355; 
    printf("%.*lf\n",precision,b); 
    return 0; 
} 
+1

爲什麼浮動? –

+0

爲精度...沒關係,你的答案是偉大的。謝謝。 – pHbits

8

是的,你可以做到這一點很容易 -

int precision = 2; 
printf("%.*lf", precision, x); 
+0

感謝。這正是我所希望的。我已經使用C多年了,不知何故錯過了這個小竅門。 – pHbits

2

如果使用C++,你可以使用setprecision:

#include <iostream> 
#include <iomanip>  // std::setprecision 

int main() { 
    int precision = 2; 
    double f =3.14159; 

    std::cout << std::setprecision(precision) << f << '\n'; 
    ++precision; 
    std::cout << std::setprecision(precision) << f << '\n'; 

    return 0; 
} 

Output

3.1 
3.14 

你可以閱讀更多關於它here

+0

ansi c - 不是C++。不過謝謝。 – pHbits

+1

@ user2737130您的問題被標記爲'C++'如果您使用'C',請不要標記問題'C++',否則會導致許多無法使用的答案。 – olevegard

相關問題