本文目錄一覽:
如何用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;
}
這是最後一個已經出現錯誤,所以遇到要精確判斷小數點的位數,最好直接按字元串讀入,這和圖靈機的工作原理暗暗相合。
在C語言中,怎樣取小數只取2兩位 然後賦值給字元串?
方法:
定義字元數組用來存儲字元串
定義浮點數賦值,如:double d=1.23456;
用sprintf()的%.2f格式截取浮點數的小數位,第三位四捨五入
輸出結果驗證
參考代碼:
附:sprintf()函數格式說明(與printf格式相同):
%m.nf m是輸出輸出數據最小字元寬度(可省,按實際長度輸出),n為小數點後保留位數(0表示不輸出小數位和小數點),第n+1位四捨五入,f表示按浮點數輸出。
C語言sprintf問題
sprintf指的是字元串格式化命令,主要功能是把格式化的數據寫入某個字元串中。
然後看%.3e就是表示以指數形式輸出浮點數,其中.3表示輸出三位小數
所以這句話的意思就是把tem2的值以指數形式轉換成字元串,並保存到dg中,並且字元串中有三位小數。
C語言 怎麼取小數的最後一位
int Function(float num)
{
int len;
char str[20];
num=num-(int)num;//求小數部分
sprintf(str,”%f”,num);//將小數轉換為字元串
len=strlen(str);
while(str[len-1]==’0′)len–;//找到尾部第一個非零字元
str[len]=’\0′;
return str[len-1]-‘0′;//’9’-‘0’=9
}
c語言中的sprintf函數?
%6.2f的格式含義是,數字整體長度包括小數點為6位,保留兩位小數。但當實際長度大于格式定義的位數時以實際為準,因此輸出是12345678.12
第二個當格式定義的位數大於實際長度時,補空格
輸出就是:##1.20 #表示空格
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/188385.html