โมดูล `decimal` ของ Python

โมดูล `decimal` ของ Python

บทความนี้อธิบายเกี่ยวกับโมดูล decimal ของ Python

คุณสามารถเรียนรู้พื้นฐานเกี่ยวกับการคำนวณด้วยโมดูล decimal การจัดการความแม่นยำ การปัดเศษ และอื่นๆ พร้อมตัวอย่างโค้ด

YouTube Video

โมดูล decimal ของ Python

โมดูล decimal ของ Python ช่วยให้การคำนวณเลขฐานสิบแบบความแม่นยำคงที่เพื่อหลีกเลี่ยงข้อผิดพลาดที่เกิดขึ้นกับการดำเนินการแบบตัวเลขทศนิยมลอยตัว ด้วยการใช้โมดูลนี้ คุณจะได้ผลลัพธ์ที่เชื่อถือได้มากขึ้นในการคำนวณทางการเงินหรืองานคำนวณที่ต้องการความแม่นยำสูง ในสถานการณ์ที่ข้อผิดพลาดจากชนิดข้อมูล float เป็นปัญหา โมดูล decimal เป็นทางเลือกที่มีประสิทธิภาพ

การใช้งานเบื้องต้นของโมดูล decimal

เมื่อใช้โมดูล decimal ให้นำเข้า Decimal class และจัดการค่าต่างๆ เป็นอินสแตนซ์ของคลาสนี้ ต่อไปเราจะอธิบายการใช้งานเบื้องต้น

1from decimal import Decimal
2
3# Basic usage example of Decimal
4a = Decimal('0.1')
5b = Decimal('0.2')
6result = a + b
7
8print(f"Result: {result}")  # Result: 0.3
  • โค้ดนี้ทำการบวก 0.1 และ 0.2 อย่างถูกต้องโดยใช้ Decimal class เมื่อทำการคำนวณเดียวกันโดยใช้ชนิดข้อมูล float จะเกิดข้อผิดพลาด ในขณะที่ Decimal สามารถหลีกเลี่ยงข้อผิดพลาดเหล่านี้ได้

การควบคุมความแม่นยำ

โมดูล decimal ช่วยให้คุณควบคุมความแม่นยำ (จำนวนตำแหน่งทศนิยม) ในการคำนวณได้อย่างง่ายดาย ฟังก์ชัน getcontext() สามารถใช้เพื่อดึงค่าคอนเท็กซ์ปัจจุบันและแก้ไขการตั้งค่าต่างๆ ได้

1from decimal import Decimal, getcontext
2
3# Set the precision
4getcontext().prec = 4  # Set to 4 decimal places
5
6a = Decimal('1') / Decimal('3')
7print(f"Result with precision 4: {a}")  # Result with precision 4: 0.3333
  • ในตัวอย่างนี้ ความแม่นยำถูกตั้งค่าให้เป็น 4 ตำแหน่งสำหรับการคำนวณ 1 ÷ 3 ด้วยการใช้ Decimal คุณสามารถตั้งค่าความแม่นยำของการคำนวณตามความต้องการ ซึ่งช่วยปรับผลลัพธ์ให้เหมาะสมได้

การปัดเศษ

โมดูล decimal มีตัวเลือกหลายแบบสำหรับการกำหนดวิธีการปัดเศษ ตัวอย่างต่อไปนี้แสดงการใช้ตัวเลือกการปัดเศษที่หลากหลาย เช่น ROUND_UP และ ROUND_DOWN

 1from decimal import Decimal, ROUND_UP, ROUND_DOWN
 2
 3# Example of rounding a number
 4a = Decimal('1.2345')
 5
 6# Rounding up
 7rounded_up = a.quantize(Decimal('0.01'), rounding=ROUND_UP)
 8print(f"Rounded Up: {rounded_up}")  # Rounded Up: 1.24
 9
10# Rounding down
11rounded_down = a.quantize(Decimal('0.01'), rounding=ROUND_DOWN)
12print(f"Rounded Down: {rounded_down}")  # Rounded Down: 1.23
  • ในที่นี้ ใช้ quantize() เพื่อปัดเศษตัวเลขขึ้นและลงให้มีความแม่นยำถึง 2 ตำแหน่งทศนิยม วิธีนี้ช่วยให้มีการปัดเศษและยังรองรับวิธีอื่นๆ สำหรับการปัดเศษด้วย

คอนเท็กซ์การทำงานและการจัดการข้อผิดพลาด

โมดูล decimal ยังสามารถจัดการข้อผิดพลาดและข้อยกเว้นที่เกิดขึ้นระหว่างการทำงานได้ การจัดการแบบกำหนดเองสามารถนิยามได้สำหรับข้อผิดพลาดเฉพาะ เช่น การหารด้วยศูนย์หรือโอเวอร์โฟลว์

1from decimal import Decimal, getcontext, DivisionByZero
2
3# Exception handling
4getcontext().traps[DivisionByZero] = True
5
6try:
7    result = Decimal('1') / Decimal('0')
8except DivisionByZero:
9    print("Division by zero error caught!")
  • ในตัวอย่างนี้ ข้อยกเว้น DivisionByZero จะถูกจับเมื่อเกิดการหารด้วยศูนย์ ในโมดูล decimal ข้อผิดพลาดสามารถถูกควบคุมและปรับแต่งได้ในลักษณะนี้

สรุป

โมดูล decimal มีประโยชน์อย่างมากในงานคำนวณทางการเงินหรือสถานการณ์ที่ต้องการความแม่นยำสูงเพื่อหลีกเลี่ยงข้อผิดพลาดของตัวเลขทศนิยมลอยตัว โมดูลนี้รองรับการใช้งานที่หลากหลาย ตั้งแต่การคำนวณพื้นฐานไปจนถึงการจัดการความแม่นยำ การปัดเศษ และการจัดการข้อยกเว้น ทบทวนประเด็นที่สรุปไว้ด้านล่างและใช้โมดูล decimal ตามความต้องการเฉพาะของคุณ

  • การคำนวณเลขทศนิยมที่แม่นยำเป็นไปได้ด้วยคลาส Decimal
  • คุณสามารถปรับการตั้งค่าความแม่นยำและการปัดเศษได้อย่างอิสระ
  • ข้อยกเว้น เช่น การหารด้วยศูนย์สามารถจัดการได้

สิ่งนี้ช่วยให้คุณใช้โมดูล decimal เพื่อลดข้อผิดพลาดในสถานการณ์ที่ต้องการการคำนวณตัวเลขที่แม่นยำ

คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย

YouTube Video