❶ 如何保證c語言中輸入一個極大的數時輸出的准確度。求對例子的詳細解釋、解決辦法。
如用 MS VC++ 6.0 編譯器,數值未超過 8位元組 整型時,可改用 _int64 型。
#include<stdio.h>
#include<stdlib.h>
main(){
_int64 a,b,c;
printf("input a b\n");
scanf("%I64d %I64d", &a,&b);
printf("%I64d\n", a+b);
printf("input c\n");
scanf("%I64d",&c);
if( c<=2147000000 && c>=-2147000000)
printf("%I64d %I64d\n",c/2+1,c-1-c/2);
return 0;
}
---------
超出此范圍,要用大數運算,(可在網路知道里找 大數四則運算 程序),輸入 用 字元串 形式。
❷ 在C語言中,要想將一個數精確到小數點後幾位,應該怎樣做。
如果是輸出的話,可以用:
printf("%.4f",3.1415926);
❸ C語言中,哪一種數據類型最精確,可以精確到小數點後40位左右的有沒有
沒有那麼大的數據類型,但是方法是變化的。看你的程序想要做什麼。
如果是計算圓面積的話,完全可以將圓周率設置為常量之類的。
簡單的舉例:#define PI 3.1415926
如果是使用公式計算圓周率,可以定義一個數組,然後將算出來的數字放進去。
舉例:int pi[35];
然後將數字放進去。可能需要將數組初始化以免出現不必要的問題。
❹ c語言如何精確小數點後指定位數
可以在輸出時,指定小數點後的有效位數,實現精確到若干位的效果。
要精確到小數點後若干位,則數據類型為浮點型,可能為單精度(float)或雙精度(double)。
在C語言中,使用格式化輸出函數printf來實現輸出。
輸出格式為
%.NF
1 %為格式化字元串的引導字元。
2 .N表示指定顯示N位小數。
3 F為類型字元,對於float, F值為f, 對於double,F值為lf。
舉例:
1 要輸出float a=1.23234; 保留3位小數的寫法為:
printf("%.3f",a);
2 輸出double b=123.345232; 保留4為小數,寫法為:
printf("%.4lf",b);
❺ C語言輸入小數,精確到小數點後10位
把scanf("%15.10f",&x);應該改成scanf("%15lf",&x);這樣就好了。
代碼中x是double型的,在輸入數據的時候是不允許使用%f的,double型的數據輸入必須使用%lf
還有,scanf("%15.10f",&x);15.10這個是不允許出現的,在數據輸入的時候只能指定輸入數據的總長度,不能指定小數點後的長度。
(5)c語言讓數字更精準擴展閱讀:
scanf(函數原型
intscanf(constchar*restrictformat,...);
函數 scanf() 是從標准輸入流stdin(標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
函數的第一個參數是格式字元串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的信息並存儲於可變參數列表中對應的指針所指位置。每一個指針要求非空,並且與字元串中的格式符一一順次對應。
❻ C語言如何想精確幾位小數就精確幾位 假設輸入數n,就精確n位這么弄
以輸出π值為例,給出演算法:
#include <stdio.h>
#define PI 3.1415926535897932384
void main( )
{
char str[81]="PI=%10.00f\n";
int n;
printf("input n(1-15):");
scanf("%d",&n);
str[7]='0'+n/10;
str[8]='0'+n%10;
printf(str,PI);
}
這段程序能輸出float的全部16為精度。
❼ 怎麼用C語言實現精確到小數點後N位如題2-5
重寫了程序:
#include<stdio.h>
int main()
{ int a,b,c,i,n=0,k[30];
scanf("%d%d%d",&a,&b,&c);
do
{ printf("Case %d: ",++n);
for(i=0; i<=c; i++)
{ k[i]=a/b;
a=a%b*10;
}
if(a/b>4)k[c]++;
for(i=c; i>0&&k[i]>9; k[i]++)k[i--]-=10;
for(i=0; i<=c; i++)
{ if(i==1)putchar('.');
printf("%d",k[i]);
}
putchar(' ');
scanf("%d%d%d",&a,&b,&c);
}
while(a||b||c);
return 0;
}
❽ C語言中怎樣盡量多得輸出數值准確位數
printf("%.
10f
\n",6./3);
幹嘛要用%g啊,用f就可以了啊,右邊可以像上面那樣,也可以
printf("%.10f\n",6*1.0/3);
主要是注意
類型轉換
就可以了,最後再以
浮點型
列印出來,
比如printf("%5.6f\n",6*1.0/3);
就表示最後列印一個
浮點數
,左邊有效數字為5偉,右邊有效數字為6偉,想要精度,自己改一下就可以了
❾ 如何提高c語言精確度
1.規定明確的數據類型(int、double、float)
2.用
Math
里的函數捨去或補齊
3.麻煩一點、設定數據偏移量,在捨去或補齊編譯量范圍內的數據
比如
偏移量為
0.001
if
(0.800000011 -
0.800 <
0.001
*
5)
{
0.800000011 =
0.800;
}
else
{
0.800000011 =
0.800
+
0.001;
}
至於
0.800
這個數是怎麼取的
方法有很多
可以截取字元串,可以計算,可以用Math里的函數
計算的方法
:
0.800000011 -
0.800000011 %
0.001
計算過程中一定要明確數據類型,數據類型越明確誤差越小
❿ c語言如何讓輸出結果精確到兩位小數
可以在輸出的時候限制小數點位數。
1、當輸出單精度浮點型float變數f時,可以用printf("%.2f",
f);來使輸出結果保留兩位有效數字。其中.2就是代表保留兩位,如果要保留三位就是%.3f。用%.0f就是只輸出整數。
2、如果是雙精度浮點數double,就需要用%.2lf來使輸出結果保留2位小數。