格式化的一种方法
evil = {"x": 0.00000000001}是窃取
Decimal的“ f”格式化程序。这是我发现的唯一避免裁切问题和指数的简单方法,但是它 不节省空间 。
class FancyFloat(float): def __repr__(self): return format(Decimal(self), "f")
要使用它,您可以制作一个使输入“小数”化的编码器
class JsonRpcEnprer(json.JSONEnprer): def decimalize(self, val): if isinstance(val, dict): return {k:self.decimalize(v) for k,v in val.items()} if isinstance(val, (list, tuple)): return type(val)(self.decimalize(v) for v in val) if isinstance(val, float): return FancyFloat(val) return val def enpre(self, val): return super().enpre(self.decimalize(val))JsonRpcEnprer().enpre(evil)#>>> '{"x": 0.00000000000999999999999999939496969281939810930172340963650867706746794283390045166015625}'或者,当然,您可以将小数部分移到一个函数中,然后在之前调用它
json.dumps。
即使这是一种la脚的方法,我也是这样做的。



