當前位置:首頁 » 編程語言 » c語言編程中計算小數點
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言編程中計算小數點

發布時間: 2022-07-23 14:04:59

1. 在c語言計算出的結果中怎麼保留小數點

C語言中浮點數輸出精確到兩位小數的語句如下

double a=2.0;printf ("%.2f", a);//其中.2指明兩位小數

說明:如%9.2f
表示輸出場寬為9的浮點數, 其中小數位為2, 整數位為6,如果9預設則場寬為該數實際位數
規定符
%d 十進制有符號整數
%u 十進制無符號整數
%f 浮點數
%s 字元串
%c 單個字元
%p 指針的值
%e 指數形式的浮點數
%x, %X 無符號以十六進製表示的整數
%o 無符號以八進製表示的整數
%g 把輸出的值按照%e或者%f類型中輸出長度較小的方式輸出
%p 輸出地址符
%lu 32位無符號整數
%llu 64位無符號整數

2. 如何用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;
}
這是最後一個已經出現錯誤,所以遇到要精確判斷小數點的位數,最好直接按字元串讀入,這和圖靈機的工作原理暗暗相合。

3. c語言中小數點算不算位

在輸出時,小數點算做一位.a++不能被賦值,程序有誤,應少寫一個加號,a=a+=5;.十進制-16在計算機里是這么表示的,16的二進制碼是0000000000010000,若要表示-16,則將16的二進制碼取反,得到1111111111101111,再將此數加1,得到1111111111110000,111111110000就是-16在計算機內存中存儲形式,稱為補碼.由於%u表示無符號的整數所以第一位不是符號判斷位,所以他會將補碼認為是一個正整數,所以此二進制值化為十進制是4294967280.所以%u表示-16的值為4294967280.

4. C語言帶小數點的計算問題

printf,sprintf函數系列的第一個參數(也就是字元串輸出格式中)中要對小數進行位數限制可以用"%a.bf"的形式表示,其中a是小數點前的位數,b是小數點後的位數
例如:
printf("小數=%7.5f",12.3);
輸出結果就是0000012.30000

5. 在c語言中如何指定精確到小數點後任意位數

Note1:
正數 x 四捨五入的技巧:
x --> (int)(x+0.5)
當 x=n+r, 0<=r<1,
若 0<=r<0.5, 則r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 則1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1

Note2:
舉例來說: 若正數要依捨去法精確到小數點後第二位
x --> (int)(x*100)/100 就好.
例如 3.2794 --> (int)(327.94)/100=327/100=3.27

Note3:
舉例來說: 若正數要四捨五入精確到小數點後第二位
x*100 四捨五入再除以100 就好
也就是 (int)(x*100+0.5)/100

6. C語言,實現一個除法,能計算到小數點後十萬位

臨時寫的,程序不完整,可能會有漏洞
/*-------------------------------------*/之間的部分需要自己補充,不過基本思想已經體現了,仔細想想應該不難做了
#include
<stdio.h>
#include
<string.h>
/*超級除法函數(只提供整數相除)*/
/*ret為輸出的結果,必須保證空間足夠*/
/*devidend被除數,divider除數*/
void
SuperDivide(char*
ret,
int
devidend,
int
divider)
{
int
bPointShowed
=
0;
/*用來表示是否出現過小數點了*/
/*使用的數組下標*/
int
i
=
0;
/*取余數用的*/
int
remainder
=
devidend;
/*用這個循環計算*/
while(1)
{
/*被除數大於除數才能除*/
if(remainder
>=
divider)
{
/*用來表示是否除盡了*/
int
bOver
=
0;
/*除盡了*/
if(devidend
%
divider
==
0)
{
bOver
=
1;
}
else
{
/*取余數*/
remainder
=
devidend
%
divider;
}
int
retNum
=
devidend
/
divider;
/*----------------------
這里需要把retNum的每一位數單獨填充到ret中,結合下標i++
---------------*/
/*-------------------------------------*/
/*除盡了就跳出了*/
if(bOver)
{
/*如果bPointShowed為0則需要在ret[i]處加上小數點*/
break;
}
}
else
{
/*不夠除了*/
remainder
*=
10;
/*如果bPointShowed為0則需要在ret[i]處加上小數點,如果有小數點了則需要補0?*/
}
/*計算到100000位了就跳出吧*/
if(i
>=
100000
-
1)
{
break;
}
}
}
int
main()
{
int
devidend,
divider;
scanf("%d
%d",
devidend,
divider);
char
ret[100000];
/*全部清0*/
memset(ret,
0,
100000);
SuperDivide(ret,
1,
1);
printf("%s",
ret);
return
0;
}

7. 45/56 c語言怎樣實現小數點後的計算

#include<stdio.h>
intmain()
{
floata=45,b=56,c=0;
c=a/b;
printf("%f",c);
}

8. C語言編程序時怎麼控制浮點型輸出的小數點精確到幾位

使用輸出格式說明符來指定精確到小數點位數。

如:

void main()

{

float a=345.234678;

printf("%.3f ", a) ;

}

其中%.3f里的3就表示輸出精確到小數點後3位。

所以可參考的形式是printf("%m.nf",p);

%m.nf,指定輸出的數據共佔m列,其中有n位是小數。如果數值長度小於m,則左端補空格,若數值長度大於m,則按實際位數輸出。

(8)c語言編程中計算小數點擴展閱讀:

實型變數分為兩類:單精度型和雙精度型,

其類型說明符為float 單精度說明符,double 雙精度說明符。在Turbo C中單精度型佔4個位元組(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型佔8 個位元組(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。

實型變數說明的格式和書寫規則與整型相同。

例如: float x,y; (x,y為單精度實型量)

double a,b,c; (a,b,c為雙精度實型量)

實型常數不分單、雙精度,都按雙精度double型處理。

9. C語言中輸出時怎樣控制小數點後的位數,請舉例說明保

#include<stdio.h>
int main(void){
float i = 12.0;
printf("%f\n", i);
printf("%.1f\n", i);
printf("%.2f\n", i);
printf("%.3f\n", i);
printf("%.4f\n", i);
printf("%.5f\n", i);
printf("%.6f\n", i);
printf("%.7f\n", i);
printf("%.8f\n", i);
printf("%.9f\n", i);
printf("%.10f\n", i);
printf("%.11f\n", i);
printf("%.12f\n", i);
return 0;
}運行結果:
12.000000
12.0
12.00
12.000
12.0000
12.00000
12.000000
12.0000000
12.00000000
12.000000000
12.0000000000
12.00000000000
12.000000000000
printf("%f\n",
i);在普通輸出控制格式字元的%和f中間加「.#」(其中#為小數點位數)