2013-07-18 34 views
0

我想在程序中輸入一個小數,但它給了我一個不同的輸出。我已經使用了%5.2f,float和double,但它仍然無法工作。我想計算一個圓的直徑,面積和圓周,但是輸出是不同的。如何在c中輸入小數

#include<stdio.h> 
#include<conio.h> 
#include<math.h> 
#include<ctype.h> 

int main(int argc, char**argv) 
{ 
    double radius; 
    double pi = 3.14; 
    double diameter; 
    double area; 
    double circumference; 

    printf("\t\tEnter value for radius: "); 
    scanf_s("%5.2f", &radius); 
    printf("radius is %5.2f", radius); 

    diameter = radius*2; 
    area = pi*(radius*radius); 
    circumference = 2*(pi*radius); 

    printf("\n\t\tThe diameter of the circle is %d \n", diameter); 
    printf("\t\tArea: %d", area); 
    printf("\t\tCircumference: %d", circumference); 
    getch(); 
    return 0; 
} 

,請告訴我,我的錯誤, 另外,我嘗試使用M_PI有一個數學常數,但它不工作。

+0

「不工作」是一個無用的錯誤報告。它怎麼不起作用?我懷疑你的輸入工作正常,但你的輸出是不可或缺的,你可能希望在'printf'調用中將'%d'更改爲'%f',但是如果沒有更好的描述你的問題,那只是一個盲目的猜測。 – Amadan

+0

我做了,它給出負輸出 – eLg

+0

你的main()函數在哪裏? –

回答

1

double的正確輸入格式說明符是%lf(或%lg%lg%le)。

scanf_s("%lf", &radius); 

當您再次打印時,您可以根據需要進行格式化。

printf("radius is %5.2f", radius); 
+0

@Henrick,我得到現在正確的輸出。有沒有辦法限制小數位數? – eLg

+0

嘗試使用'%lg'。 '%lf'總是給你六位數的presicion,而'%lg'則給你六位數。 – Henrik

+0

double的格式說明符是c99中的'%f'。你指的是C89。 – 0decimal0