[問題] 關於反三角函數的計算

看板Python作者 (NEWSTED5566(亂劣我文))時間11年前 (2013/07/26 12:31), 編輯推噓0(0010)
留言10則, 6人參與, 最新討論串1/2 (看更多)
各位大大以下是我寫的code import math print "HI!! WELCOME" name = raw_input('What is your rate?\n') print "Wait for it!!!!! It's gonna be..." a = float(name) b = math.asin(a) d = math.pi c = b * 180 //d print c 但是我在執行時,輸入0.5 理應他回傳的值應該是30 但是他卻回傳29... 請問這有辦法解嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.95.170

07/26 12:40, , 1F
我執行你的程式碼,是回傳30。
07/26 12:40, 1F

07/26 13:33, , 2F
我的電腦是mac
07/26 13:33, 2F

07/26 14:31, , 3F
// 改成 / 就對了 為什麼要用//?
07/26 14:31, 3F

07/26 14:42, , 4F
電腦計算誤差,無解,小數轉整數的話一定要用 round()
07/26 14:42, 4F

07/26 14:43, , 5F
round() 才會做四捨五入,用 int() 或 // 除出來都是
07/26 14:43, 5F

07/26 14:44, , 6F
無條件捨去,即使是 29.99999999 也會變 29
07/26 14:44, 6F

07/26 14:45, , 7F
所以用 round 就是 c = int(round(b*180 / d))
07/26 14:45, 7F

07/26 16:55, , 8F
//是python3的東西
07/26 16:55, 8F

07/26 16:57, , 9F
不對,應該說int/int在python3不會無條件捨去
07/26 16:57, 9F

07/27 04:47, , 10F
要不要乾脆用 decimal module?
07/27 04:47, 10F
文章代碼(AID): #1HyVkJJN (Python)
文章代碼(AID): #1HyVkJJN (Python)