亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么等價變換的3個式子,返回值卻不同?


-math.sqrt(b*b/(4*a*a)-c/a)-b/(2*a)

-b/(2*a)-math.sqrt(b*b/(4*a*a)-c/a)

(-b-math.sqrt(b*b/(4*a*a)-4ac))/(2*a)

這三個式子怎么看都是等價變換吧?為什么在計算(2,3,0)的時候會分別返回-0.0;-1;-1.5這三個值?


正在回答

2 回答

找到原因了,這個是float和int之間的類型轉換問題;

(-b-math.sqrt(b*b-4ac))/(2*a)因為sqrt返回類型是float,并且式子中不存在類型轉換,最后的“/”運算也是float類型的運算,所以是正確的;

而另兩個式子在調用sqrt()之前就已經進行了int類型的“/”運算,int類型的“/”運算結果依然會是int,會擯除小數部分,所以最終結果就不同了;解決的方法是可以在計算數值之前用float()將a;b;c轉換成float

0 回復 有任何疑惑可以回復我~

第三個公式與前面兩個不一樣,目前前面兩個還不太確定是啥情況

0 回復 有任何疑惑可以回復我~
#1

慕雪6475486 提問者

第三個式子我鍵入錯了,其實是: (-b-math.sqrt(b*b-4ac))/(2*a) 但輸出就是不同,想了半天想不明白
2019-01-10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758392    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

為什么等價變換的3個式子,返回值卻不同?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號