Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ฟังก์ชันทศนิยม (Decimal Functions) ใน Python

สำหรับคำนวณเลขทศนิยมจุดลอยตัว Python มีโมดูล decimal ซึ่งมีฟังก์ชันมากมายสำหรับการคำนวณทศนิยมที่แม่นยำ นี่คือฟังก์ชันสำคัญและใช้บ่อย

compare()

เปรียบเทียบเลขทศนิยม คืนค่า 1 ถ้าตัวแรกมากกว่า -1 ถ้าน้อยกว่า 0 ถ้าเท่ากัน

โค้ดตัวอย่าง

import decimal
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.61)
print("The result is:", val1.compare(val2))

val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(-2.6)
print("The result is:", val1.compare(val2))

val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.6)
print("The result is:", val1.compare(val2))

ผลลัพธ์

The result is: -1
The result is: 1
The result is: 0

max() และ min()

หาค่าสูงสุดและต่ำสุดของเลขทศนิยมสองค่า

โค้ดตัวอย่าง

import decimal
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.61)
print("The max value is:", round(val1.max(val2), 2))
print("The min value is:", round(val1.min(val2), 2))

ผลลัพธ์

The max value is: 2.61
The min value is: 2.60

getcontext()

เปลี่ยนความแม่นยำ (precision) ของการคำนวณ ค่าเริ่มต้นคือ 28 หลัก

โค้ดตัวอย่าง

from decimal import *
print(Decimal(13) / Decimal(7))
getcontext().prec = 6
print(Decimal(13) / Decimal(7))
getcontext().prec = 10
print(Decimal(13) / Decimal(7))

ผลลัพธ์

1.857142857142857142857142857
1.85714
1.857142857

exp()

คำนวณค่าเลขยกกำลังธรรมชาติ e**x

โค้ดตัวอย่าง

from decimal import *
print(Decimal(1).exp())
print(Decimal(2).exp())
print(Decimal(4).exp())

ผลลัพธ์

2.718281828459045235360287471
7.389056098930650227230427461
54.59815003314423907811026120

as_integer_ratio()

หาจำนวนเต็มสองจำนวนที่หารกันได้ทศนิยมนั้น

โค้ดตัวอย่าง

from decimal import *
v = Decimal('2.1834').as_integer_ratio()
print(v)
v = Decimal('-1.92').as_integer_ratio()
print(v)

ผลลัพธ์

(10917, 5000)
(-48, 25)

ln() และ log10()

คำนวณลอการิทึมธรรมชาติ (ฐาน e) และลอการิทึมฐาน 10

โค้ดตัวอย่าง

from decimal import *
ln_val = Decimal('2.1').ln()
print(ln_val)
log_val = Decimal('2.1').log10()
print(log_val)

ผลลัพธ์

0.7419373447293773124826065257
0.3222192947339192680072441618

fma(a, b) - Fused Multiply Add

คูณค่าทศนิยมกับ a แล้วบวก b (คำนวณในขั้นตอนเดียวลดข้อผิดพลาดปัดเศษ)

โค้ดตัวอย่าง

from decimal import *
# (2.1 * 2) + 5
fma_val = Decimal(2.1).fma(2, 5)
print(fma_val)
# (8.1 * 3) + 5
fma_val = Decimal(8.1).fma(3, 5)
print(fma_val)

ผลลัพธ์

9.200000000000000177635683940
29.29999999999999893418589636