ฉันใช้โมดูล jsonมาตรฐานใน python 2.6 เพื่อจัดลำดับรายการลอย อย่างไรก็ตามฉันได้รับผลลัพธ์เช่นนี้:
>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
ฉันต้องการให้โฟลถูกสร้างด้วยทศนิยมสองหลักเท่านั้น ผลลัพธ์ควรมีลักษณะดังนี้:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'
ฉันได้ลองกำหนดคลาสตัวเข้ารหัส JSON ของตัวเองแล้ว:
class MyEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, float):
return format(obj, '.2f')
return json.JSONEncoder.encode(self, obj)
สิ่งนี้ใช้ได้กับวัตถุลอยตัว แต่เพียงผู้เดียว:
>>> json.dumps(23.67, cls=MyEncoder)
'23.67'
แต่ล้มเหลวสำหรับวัตถุที่ซ้อนกัน:
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
ฉันไม่ต้องการมีการอ้างอิงภายนอกดังนั้นฉันชอบที่จะใช้โมดูล json มาตรฐาน
ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?