當前位置:編程學習大全網 - 源碼下載 - 如何用c語言計算小數點後位數

如何用c語言計算小數點後位數

這個要看小數按什麽格式輸入。

如果按%s輸入,也就是按字符串格式輸入,先找到小數點的位置,然後統計下小數點後數字的長度。

具體實現可參考:

#include?<stdio.h>

#include?<stdlib.h>

#include?<string.h>

int?main(int?argc,?char*?argv[])

{

char?a[128];

while(scanf("%s",a)!=EOF)

{

if(strstr(a,".")!=NULL)

printf("%d\n",strlen(strstr(a,".")+1));

else?

printf("0\n");

}

system("pause");

return?0;?

}

如果按%f(對應float類型小數)或者%lf(double類型的小數)方式讀入,則需要先去掉整數部分,然後看小數部分壹直乘10減去整數部分,知道等於0,統計,乘了幾次10,但是由於浮點數在計算機中存的並不是準確值,這個往往得不到正確的結果。可以使用sprintf(str,"%g",f);,然後由於f畢竟不是準確值,還是會出現有些問題,源碼如下:

#include?<stdio.h>

#include?<stdlib.h>

#include?<string.h>

int?main(int?argc,?char*?argv[])

{

char?a[128];

float?f;

while(scanf("%f",&f)!=EOF)

{

sprintf(a,"%g",f);

if(strstr(a,".")!=NULL)

printf("%d\n",strlen(strstr(a,".")+1));

else?

printf("0\n");

}

system("pause");

return?0;?

}

這是最後壹個已經出現錯誤,所以遇到要精確判斷小數點的位數,最好直接按字符串讀入,這和圖靈機的工作原理暗暗相合。

  • 上一篇:去日本留學有什麽要求?
  • 下一篇:如何編譯Apache Hadoop2.4.0源代碼
  • copyright 2024編程學習大全網