আমি ফ্লোটের একটি তালিকা সিরিয়াল করতে পাইথন ২.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]'
আমি নিজের জেএসএন এনকোডার শ্রেণি সংজ্ঞায়নের চেষ্টা করেছি:
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]'
আমি বাহ্যিক নির্ভরতা রাখতে চাই না, তাই আমি স্ট্যান্ডার্ড জেসন মডিউলটির সাথে থাকা পছন্দ করি।
আমি কীভাবে এটি অর্জন করতে পারি?