1樓:嘯嘯_飛
精度最大的extended和comp也正好20位,但是如果整數部分不止1位,就麻煩了,用高精解決吧
2樓:潛爾藍
這個是高精度計算問題
小學的長除法會吧 就讓計算機按照這個步驟就行
用pascal計算a/b的精確值,設a,b是一般整數,計算機可以接受的數,精確小數後20位
3樓:匿名使用者
varpos:array[1..50] of integer;
s:array[1..35] of integer;
len,st,x,y,i:integer;
begin
fillchar(s,sizeof(s),0);/*小數部分初始化*/
fillchar(posi,sizeof(posi),0); /*小數值的位序列初始化*/
len:=0;st:=0; /*小數部分的指標和迴圈節的首指標初始化*/
read(x,y); /*讀被除數和除數*/
write(x div y); /*輸出整數部分*/
x:=x mod y; /*計算x除以y的餘數*/
if x=0 then exit;/*若x除盡y,則成功退出*/
while len<20 do /*若小數位未達到上限,則迴圈*/
begin
inc(len);
posi[x]:=len;/*記下當前位小數,計算下一位小數和餘數*/
x:=x*10; s[len]:=x div y;x:=x mod y;
if posi[x]<>0 /*若下一位餘數先前出現過,則先前出現的位置為迴圈節的開始*/
then begin st←posi[x]; break;end;/*then}
if x=0 then break; /*若除盡,則成功退出*/
end;/*while*/
if len=0
then begin writeln;exit;end; /*若小數部分的位數為0,則成功退出;否則輸出小數點*/
write('.');
if st=0 /*若無迴圈節,則輸出小數部分,否則輸出迴圈節前的小數和迴圈節*/
then for i:=1 to len do write(s[i])
else begin for i:=1 to st-1 do write(s[i]);
write('(');
for i:=st to len do write(s[i]);
write(')');
end;/*else*/
end.
怎樣用pascal高精度運算求a/b 的精確值?要求精確到小數點後20位
free pascal輸入正整數a,b,c,輸出a/b的小數形式,精確到小數點後c位。a,b<=10^6,c<=100
4樓:
var a,b:real;c:longint;
begin
readln(a,b,c);
if c=0 then begin
writeln(a/b:0:0);exit;
end;
write(trunc(a/b));
a:=a-trunc(a/b)*b;
write('.');
while c>1 do begin
a:=a*10;
write(trunc(a/b));
dec(c);
a:=a-trunc(a/b)*b;
end;
a:=a*10;
writeln(round(a/b));
end.
逐漸執行除法(模擬)。
我說樓上的怎麼這麼不負責任,pascal除法的精度根本沒有100位,直接加:0:c輸出不了20個小數,只有17位,何談100位。真是可悲。
5樓:匿名使用者
program ex;
vara,b:longint;
c:1..100;
begin
readln(a,b,c);
writeln(a/b:0:c);
end.
超簡潔的
選我吧易懂
解釋:writeln(a/b:0:c);
a/b:代表a/b的值
:c保留c位小數
注意::0與:c位置不能掉轉。
(其實:0我還不知道是什麼意思呢)
我發現如果不加:0就會變成科學計數法了...
加了:0才能轉化成正常小數
6樓:匿名使用者
vara,b:longint;
c:shortint;
begin
readln(a,b,c);
writeln(a/b:0:c);
end.水題
7樓:
程式(pascal):
vara,b:longint;
c:integer;
d:real;
begin
read(a,b,c); readln;
d:=a/b;
writeln(d:0:c);
end.
8樓:匿名使用者
你還是看4樓的吧,這題就坑在精度控制!
我學c++的,正好寫了這題
#include
#include
using namespace std;
int main()
;iz=a/b;
iy=a%b;
for(int i=1;i<=c+1;i++)else
}//處理四捨五入
c1=c;
if(store[c1+1]>=5)
else break;} }
//輸出控制
cout< for(int i=1;i<=c;i++)cout< cout<<(double)clock()/clocks_per_sec; system("pause");} (用pascal語言)求兩個整數的最小公倍數,輸入整數a,b,輸出a,b的最小公倍數(全過程) 9樓:匿名使用者 vara, b: integer;//兩個整bai數du res: integer;//最小公倍數zhibegin readln(a);//讀取第一個整數 readln(b);//讀取第二個整數 res := b;//認為最小公倍數的起始值dao為bif a > b then res := a;//如果a>b, 那麼最小公倍數起始值為arepeat inc(res);//res遞加 until (res mod a = 0) and (res mod b = 0);//是最小公倍數就退出 writeln(res);//輸出最小公倍數readln; end.//附上執行截圖 10樓:匿名使用者 varm,n,b:integer; begin readln(m,n); if m>n then b:=m else b:=n; while not ((b mod n=0)and(b mod m=0)) do inc(b); writeln(b); readln; end. 11樓:匿名使用者 我不會pascal,就用c++試下吧,讓後面高手來#includeusing namespace std;int main( )cout<<"最大公約數為:"<倍數為:"<這隻能專算是一種演算法吧,屬,,,不好意思了 12樓:匿名使用者 var m,n,r,a,b:int64; begin readln(m,n);//(輸入兩制 個數); a:=m; b:=n; r:=m mod n; while r<>0 do(用輾轉法求最大公約數); begin m:=n; n:=r; r:=m mod n; end; write(a*b div n);(利用m*n=(m,n)*[m,n]); end. 請用pascal語言編寫程式7、乘法計算器:程式設計由鍵盤輸入兩個整數a和b,計算並輸出它們的乘積。 13樓:匿名使用者 vara,b:longint; begin readln(a,b); writeln(a*b); end. 14樓:匿名使用者 var a,b:int64;begin readln(a,b); writeln(a*b);end. 15樓:匿名使用者 program aa;var a,b:integer; c:longint; read(a,b);c:=a*b;write(c);end. 16樓:匿名使用者 對方法沒有要求?高精度或者什麼? pascal程式設計:輸入兩個整數a,b,輸出它們的和(a,b<=10^9) 17樓:聽不清啊 var a,b:longint; begin readln(a,b); writeln(a+b) end. 用pascal,求a/b的高精度值 18樓:匿名使用者 var a,b,l,i,j:longint; hash:array[1..100000]of boolean; p,p1:array[0..100000]of longint; s:ansistring; begin readln(a,b); if a mod b=0 then begin writeln(a div b,'.',0);exit; end; str(a div b,s);s:=s+'.'; a:=a mod b; fillchar(hash,sizeof(hash),false); l:=0; p[0]:=a; hash[a]:=true; while a<>0 do begin a:=a*10; inc(l); p1[l]:=a div b; a:=a mod b; p[l]:=a; if hash[p[l]] then break else hash[p[l]]:=true; end; if a=0 then begin write(s); for i:=1 to l do write(p1[i]); end else begin for i:=0 to l-1 do if p[i]=p[l] then break; for j:=1 to i do s:=s+chr(p1[j]+48); s:=s+'('; for j:=i+1 to l do s:=s+chr(48+p1[j]); s:=s+')'; while length(s)>76 do begin writeln(copy(s,1,76)); delete(s,1,76); end; writeln(s); end; end. 順便打出迴圈節! pascal 的初級題 v,d eig pascal 6 設計演算法 計算六階矩陣的特徵值.即實現matlab中的eig 功能 要自己做的話,這就是一個數值計算求特徵值的問題了,找一本計算方法看看 要不然可以使用矩陣分解的命令,比如jordan schur 分解後得到的矩陣的對角元就是特徵值,你提取出來就是了。有沒有大神能... 獵天使魔女這款 的設計靈感源於日本著名的一款動作,冒險類遊戲獵天使魔女中的女主角貝姐,遊戲中的背景,可是大眾女神的形象啊,不僅樣子炫酷,身材還非常的 但是英雄聯盟中獵天使魔女這款 可謂是毀經典呀。遊戲模型很醜,但是這也不能怪模型師,畢竟原畫也就畫成那個樣子了,雖然說手感還行,沒有特效也就算了,醜成這... 解 a b 2 7得 a2 b2 2ab 7 1 內 a b 2 3得a2 b2 2ab 3 2 1 1 2得 容2ab 2ab 7 3 4ab 4 ab 1 2 1 2得 a2 b2 a2 b2 10 a2 b2 5 將 a b 2 7展開得 a2 b2 2ab 7,將 a b 2 3得專a2 b...計算6階pascal矩陣的特徵值和特徵向量Matlab程式
spss怎麼計算p值,怎樣用SPSS計算P值
已知ab7,ab3,求下列各式的值。1ab2ab