[問題] 求-27的立方根

看板C_and_CPP作者 (阿彰)時間13年前 (2010/09/29 23:27), 編輯推噓6(6025)
留言31則, 12人參與, 最新討論串1/1
使用 C++ 寫的 #include<iostream> #include<math.h> using namespace std; int main() { double a,b; a=-27; b=pow(a,1.0/3.0); cout<<b; cin.get(); return 0; } =================== 結果 -1.#IND =================== 這樣寫似乎沒有辦法求出負數的立方根 請問有什麼其他的方法 可以讓我隨便輸入一個數(正數或負數) 就求出他的立方根嗎? 還是只能用if判斷正負再來做呢? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.189.112

09/29 23:30, , 1F
complex
09/29 23:30, 1F

09/29 23:31, , 2F
用if就好啦
09/29 23:31, 2F

09/29 23:33, , 3F
因為後續要做的有點複雜 所以不希望用if判斷...
09/29 23:33, 3F

09/29 23:33, , 4F
complex是要怎樣寫呢??(我是C++初學者...)
09/29 23:33, 4F

09/29 23:35, , 5F
complex要怎麼用在原po的case...?
09/29 23:35, 5F

09/29 23:39, , 6F
這樣就很複雜QQ.....
09/29 23:39, 6F

09/29 23:39, , 7F
其實你可以另外包成function= =
09/29 23:39, 7F

09/29 23:45, , 8F
你另外寫一個function專門做這種開立方根的吧...
09/29 23:45, 8F

09/29 23:51, , 9F
剛剛才發現是開立方 拍謝- -||
09/29 23:51, 9F

09/29 23:59, , 10F
這個 if 是跑不掉的 你寫個 function 做吧
09/29 23:59, 10F

09/30 00:00, , 11F
主因是 pow 並不知道你是要 1/3 次方還是 0.3333333333 次方
09/30 00:00, 11F

09/30 00:01, , 12F
還是 0.333333313465118408203125 次方...
09/30 00:01, 12F

09/30 00:06, , 13F
正在試有沒有不用if的方法...
09/30 00:06, 13F

09/30 00:24, , 14F
只有魔法數字(整數)才有用: http://ppt.cc/90Tg
09/30 00:24, 14F

09/30 00:28, , 15F
為了呼叫端的程式碼簡短, 往往被呼叫端要寫更多程式碼
09/30 00:28, 15F

09/30 01:23, , 16F
位什麼我覺得問題出在pow上面...
09/30 01:23, 16F

09/30 01:37, , 17F
GNU說:Mathematically, pow would return a complex
09/30 01:37, 17F

09/30 01:37, , 18F
number when base is negative and power is not an
09/30 01:37, 18F

09/30 01:38, , 19F
integral value. pow can't do that, so instead it
09/30 01:38, 19F

09/30 01:38, , 20F
signals a domain error.
09/30 01:38, 20F

09/30 01:39, , 21F
所以可能要看用途... 如果只求實數解,那包成一個判斷正負
09/30 01:39, 21F

09/30 01:40, , 22F
的function吧...(或說用?:就很簡潔)
09/30 01:40, 22F

09/30 01:42, , 23F
如果要複數解... 我跟複數不熟 XD 原po我再跟你討論吧~
09/30 01:42, 23F

09/30 01:43, , 24F
樓上那位用template的弟兄 是不是忘了人家要吃variable
09/30 01:43, 24F

09/30 01:44, , 25F
在compile time作正負判斷有什麼用XDD
09/30 01:44, 25F

09/30 01:50, , 26F
只是想玩玩看而已 > <
09/30 01:50, 26F

09/30 01:52, , 27F
話說回來 你都在compile time作正負判斷了 應該佛心一
09/30 01:52, 27F

09/30 01:53, , 28F
點在compile time就把立方根算出來!
09/30 01:53, 28F

09/30 01:56, , 29F
這...Orz 我數學不太好 >//<
09/30 01:56, 29F

09/30 23:50, , 30F
用牛頓法試試吧
09/30 23:50, 30F

10/01 08:31, , 31F
如果要用到牛頓法的話倒覺得直式開立方根好些
10/01 08:31, 31F
文章代碼(AID): #1CerhXfC (C_and_CPP)