ฟังก์ชัน math.fsum() ใช้คำนวณผลรวมของค่าใน iterable (range, list, tuple, array) ด้วยความแม่นยำสูง (High precision) โดยใช้เฟลตติ้งพอยต์ (Floating point) เหมาะสำหรับการคำนวณทางคณิตศาสตร์ที่ต้องการความแม่นยำ
ไวยากรณ์
math.fsum(iterable) # iterable: range, list, tuple, array # Return: ผลรวมเป็น float
ตัวอย่างการใช้งาน
1. ใช้กับ range
import math print(math.fsum(range(12))) # 0+1+2+...+11 = 66.0
2. ใช้กับลิสต์จำนวนเต็ม
listA = [5, 12, 11] print(math.fsum(listA)) # 28.0
3. ใช้กับลิสต์ทศนิยม
listB = [9.35, 6.7, 3] print(math.fsum(listB)) # 19.05
ผลลัพธ์
66.0 28.0 19.05
ข้อได้เปรียบของ fsum() เทียบกับ sum(): fsum() ใช้การบวกแบบ Kahan summation algorithm ทำให้แม่นยำกว่าเมื่อบวกตัวเลขทศนิยมจำนวนมากหรือตัวเลขที่มีขนาดต่างกันมาก
import math
# เปรียบเทียบความแม่นยำ
values = [1e16, 1, -1e16]
print("sum():", sum(values)) # 0.0 (ไม่แม่นยำ)
print("fsum():", math.fsum(values)) # 1.0 (แม่นยำ)