Round Number
round_number · numbers · number, text
2026-09-23
กำลังประมวลผล…
round_number · numbers · number, text
2026-09-23
ตัวเลขที่ได้จากการคำนวณหรือการแปลงหน่วยมักมีทศนิยมยาวเกินจำเป็น เช่น 1.23456789 เทคนิคนี้ปัดให้เหลือจำนวนหลักที่ต้องการ พร้อมให้เลือกทิศทางการปัด เพราะงานการเงินกับงานสถิติต้องการคนละแบบ
decimals ปัดตาม mode แล้วหารกลับhalf_up ปัดครึ่งขึ้นเสมอ floor ปัดลง ceil ปัดขึ้นdecimals เท่ากับ 0 จะได้คอลัมน์ชนิด integerเลขทศนิยมฐานสองทำให้ค่าบางค่าไม่ได้ถูกเก็บตรงตามที่พิมพ์
1.005ถูกเก็บจริงเป็นค่าที่น้อยกว่าเล็กน้อย การปัดสองตำแหน่งจึงได้1ไม่ใช่1.01ขณะที่2.005ถูกเก็บเป็นค่าที่มากกว่าเล็กน้อยจึงได้2.01พฤติกรรมนี้เหมือนกันทุกภาษาที่ใช้ float ถ้าต้องการความแม่นยำระดับการเงิน ควรเก็บเป็นหน่วยสตางค์แบบจำนวนเต็มแทน
| Parameter | Type | Default |
|---|---|---|
columns | string[] | — |
decimals | number | 2 |
mode | half_up | floor | ceil | "half_up" |
import json
import math
import re
def parse_number(value):
if isinstance(value, bool):
return None
if isinstance(value, (int, float)):
return value
if isinstance(value, str) and re.fullmatch(r'[+-]?(\d+\.?\d*|\.\d+)', value.strip()):
return float(value)
return None
def round_number(value, decimals=2, mode='half_up'):
number = parse_number(value)
if number is None:
return value
factor = 10 ** decimals
scaled = number * factor
if mode == 'floor':
rounded = math.floor(scaled)
elif mode == 'ceil':
rounded = math.ceil(scaled)
else:
rounded = math.floor(scaled + 0.5)
result = rounded / factor
return int(result) if result == int(result) else result
values = [1.2345, '2.005', '1.005', 2.5, -2.5, None, 'x']
result = [round_number(value) for value in values]
print(json.dumps(result, ensure_ascii=False))
คอลัมน์ unit_price มีทศนิยมหกหลักจากการหารยอดรวมด้วยจำนวนชิ้น ตั้ง decimals เป็น 2 และ mode เป็น half_up สำหรับรายงานให้ลูกค้า ถ้าเป็นงานประมาณการต้นทุนที่ห้ามต่ำกว่าจริง ให้ใช้ ceil แทน แล้วบันทึกเหตุผลไว้ในชื่อ Recipe
ใช้ convert_type ก่อนเพื่อให้คอลัมน์เป็นตัวเลขจริง ใช้ strip_currency เมื่อยังมีสัญลักษณ์เงินติดอยู่ และใช้ clamp_value เมื่อต้องการบังคับช่วงของค่าเพิ่มเติม