โมดูล `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 ด้วย