1樓:匿名使用者
t = t * i / (2 * i + 1); 這樣 運算時,先算t*i ,因為t是浮點數,所以t*i結果就是浮點數 再除以整數,結果是浮點數
而:t = t * (i / (2 * i + 1)); 這樣,先算括號中的,i / (2 * i + 1) i是整數,所以,結果還是整數,小數部分會被丟棄,因此,結果總是0
2樓:匿名使用者
此處變數i是int型的,故子表示式i / (2 * i + 1)必然也是一個int型的資料,故而子表示式i / (2 * i + 1)的值必然始終都是0
而表示式t * i / (2 * i + 1)根據運算子結合性可知即(t * i) / (2 * i + 1),由於t是double型,故子表示式(t * i)必然是double型,不會產生上述問題
或者你可以直接改成t = t * (i / (2.0 * i + 1)); 也可以,這個地方就是隱式型別轉換的問題而已
3樓:匿名使用者
不是括號的問題,是整數相除的問題。
整數相除的時候會直接捨去小數部分,比如3/2=1去掉括號後,因為先計算t*i,其中t為浮點型,相除結果是也會是浮點,最後能得到正確的值。
加上括號,那麼就會先進行括號中運算,i/(2*i+1)無論i是什麼值,其結果都是0
用c語言程式設計計算π的值
4樓:冰弦
#include
#include//開根號我用了數學庫函式int main()
printf("%.14lf\n",pi);//小數點後14位return 0;}
5樓:匿名使用者
沒看明白,不過這個形式不是可以用遞迴去寫的麼
c語言求π的值
6樓:匿名使用者
原理是 pi=sqrt((1/1^2+1/2^2+1/3^2+...)*6)
#include
#include
int main()
pi=sqrt(sum*6);
printf("%lf",pi);
}顯示效果如下:
7樓:聽不清啊
#include
int main(){
int i=1;
double sum=1,b=3,a=1,m=1e-10;
while(a/b>=m){
sum=sum+a/b;
i++;
a=a*i;
b=b*(i+i+1);
printf("%.10lf\n",2*sum);
return 0;
c語言編輯計算,。。。。c語言。。編輯。。。計算1 1000內所有含6的數的和。。求解。求技巧
完整 給你參考 include include int main printf n n1 1000包含6的數的合為 d n sum getch return 0 借用一樓的 稍做下修改 int main void a 10 printf sum ld n sum return 0 注意是含6的數,不...
關於c語言的計算問題,關於c語言的計算問題
這涉及c的細節,我建議你記住 程式中的常量其實也存放在記憶體單元中,c規定運算運算子兩旁同類時運算結果與參與運算的數的型別相同,事實上時 加法器直接處理那兩個記憶體單元中的資料,並將結果送到另一記憶體單元,而這裡的 另一記憶體單元也是兩位元組長,因此他只接收到結果的低二位元組部分 及1的補碼 所以,...
求大佬指點c語言程式設計,C語言計算程式設計求大佬指點
include void main break if k printf 無此數 du else printf d之前的平zhi均數為 f n d之後dao的平均數為 f m,sum1,m,sum2 c語言計算程式設計 求大佬指點 用c語言分別bai輸出個位十du位和百位的數字,zhi可以根據下面步驟...