推 abcabcabc:因為他轉了你要轉的,你沒叫他轉的,他不自作聰明 08/05 22:57
→ abcabcabc:所以只要注意到各運算子的優先順序就OK了 08/05 22:58
→ abcabcabc:如果硬要那麼寫的話,善用() 或每組東西前都加個轉換 08/05 22:59
→ MaxHaru:ans=(double)(ans + 1/((2*i)+1) * (i%2 == 0 ? 1 : -1); 08/05 23:13
→ MaxHaru:可是我寫成這樣才會有問題說,為什麼?? 08/05 23:13
→ MaxHaru:ans = (double)(ans + 1/((2*i)+1) * (i%2 == 0 ? 1:-1)); 08/05 23:14
→ MaxHaru: 也 08/05 23:15
推 DennisKao:i是int,1/((2*i)+1的結果會失真...如果有小數的話 08/05 23:36
推 abcabcabc:因為優先順序, 1/3 如果你是給他 int 的話 08/05 23:38
→ abcabcabc:所以你(double)看什麼東西需要轉的,要對好目標 08/05 23:39
→ DennisKao:所以,把1轉型成double後,compiler把除號後的分子轉型 08/05 23:39
→ abcabcabc:它 int 的仍是 int 你沒轉 加起來後的東西你才轉 08/05 23:39
推 aecho:1.0/3.0 和 1/3是不同的東西喔~~ 08/06 07:18