কেন অ্যাবস (0) এর জন্য গো এর একটি বিশেষ কেস আছে


9

আমি গো নিয়ে ঘুরে বেড়াচ্ছিলাম, এবং গণিত প্যাকেজে অ্যাবস ফাংশনের জন্য এই বিশেষ আকর্ষণীয় কোডটি পেয়েছি:

http://golang.org/src/pkg/math/abs.go

14 func abs(x float64) float64 {
15      switch {
16      case x < 0:
17          return -x
18      case x == 0:
19          return 0 // return correctly abs(-0)
20      }
21      return x
22  }

কেন আমাদের x == 0 এর বিশেষ কেস থাকা দরকার? আমি 18 এবং 19 লাইনটি মুছলে কী হবে?

উত্তর:


16

মন্তব্যটির কারণ ব্যাখ্যা করে - abs(-0)0টি ফিরে আসা উচিত, তবে বিশেষ ক্ষেত্রে ছাড়া, abs(-0)ফিরে আসবে -0।

আমি ধরে নিই গো আইইইই ফ্লোট ব্যবহার করে তাই +0 এবং -0 উভয়ই সাইন বিটের জন্য বিভিন্ন মান ব্যবহার করে প্রতিনিধিত্ব করতে পারে।


ঠিক আছে তবে 0 এবং -0 মেমরিতে একইভাবে উপস্থাপন করা হয় না?
ব্যবহারকারী 84386

6
@ ব্যবহারকারী 84386 - আমি ধরে নিয়েছি গো আইইইই ফ্লোট ব্যবহার করে, সুতরাং এটিতে একটি চিহ্ন থাকবে, সুতরাং +0 এবং -0 উভয়ই নিন্দনীয়।
লি

9

আইইইই 754 ফ্লোটিং-পয়েন্ট স্ট্যান্ডার্ড স্বাক্ষরিত শূন্যগুলিকে অনুমতি দেয় । Negativeণাত্মক শূন্য একটি ধনাত্মক শূন্যের সমান, সুতরাং এটি < 0পরীক্ষার দ্বারা আচ্ছাদিত হবে না ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.