跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • go 中的 hypot 实现疑问。
未分類
21 6 月 2020

go 中的 hypot 实现疑问。

go 中的 hypot 实现疑问。

資深大佬 : sxshi110 55

go 中的 hypot 实现源码:

func hypot(p, q float64) float64 {  // special cases  switch {  case IsInf(p, 0) || IsInf(q, 0):   return Inf(1)  case IsNaN(p) || IsNaN(q):   return NaN()  }  p, q = Abs(p), Abs(q)  if p < q {   p, q = q, p  }  if p == 0 {   return 0  }  q = q / p  return p * Sqrt(1+q*q) } 

为什么不直接这样实现:

func hypot(p, q float64) float64 {  switch {  case IsInf(p, 0) || IsInf(q, 0):   return Inf(1)  case IsNaN(p) || IsNaN(q):   return NaN()  }  return Sqrt(p*p+q*q) } 

请教其中有什么差别

大佬有話說 (4)

  • 資深大佬 : wangsyi13

    不知道,等大神解答。。

  • 資深大佬 : gstqc

    防止溢出

  • 資深大佬 : StarUDream

    二正解,p*p+q*q 这个值可能溢出

  • 主 資深大佬 : sxshi110

    @gstqc
    感谢,想想确实是这个思路。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具