2014-04-16 18 views
0

我正在嘗試編寫一個程序,它需要一個數字和所需的小數位數,然後通過比較該數字與該數字+1的距離來適當地舍入該數字。如何判斷用戶輸入中有多少個小數位?

int main() { 
double tester; 
int numberOfDecimals; 

printf("Enter a number to be rounded: "); 
scanf("%lf",&tester); 
printf("%d rounded to how many decimal places? ",tester); 
scanf("%d", &numberOfDecimals); 

後,我問他們想要四捨五入到小數位數的號碼,我該如何檢查,看看有多少位小數在他們輸入的號碼嗎?

+2

如果直接讀入雙精度型,則不知道它們實際輸入了多少位數。考慮讀入一個字符串,然後sscanf進入一個變量。 –

+0

閱讀一個字符串並解析它,而不是爲你'scanf'解析。 – clcto

+0

你想四捨五入到指定的小數位數 - 得到了。爲什麼它會使輸入數字的小數位數有所不同? – chux

回答

0
int main() { 
double tester; 
int numberOfDecimals; 
char strBuf[255+1]; 
char *decimalPoint; 
int decimalPlacesOfInput = 0; 

printf("Enter a number to be rounded: "); 
fgets(strBuf, sizeof(strBuf), stdin); 

decimalPoint=strchr(strBuf, '.'); 
if(decimalPoint) 
    { 
    ++decimalPoint; 
    while(isdigit(*decimalPoint)) 
     { 
     ++decimalPlacesOfInput; 
     ++decimalPoint; 
     } 
    } 

printf("Number entered with %d decimal places.\n", decimalPlacesOfInput); 

tester=atof(strBuf); 
printf("%d rounded to how many decimal places? ",tester); 
scanf("%d", &numberOfDecimals); 
... 
相關問題