fastjson 浮点数 如何取消科学记数法序列化

baubqpgj  于 2021-11-27  发布在  Java
关注(0)|答案(6)|浏览(647)

value: 0.00000001 会被序列化时 会被处理为 value: 1e-8,不需要按科学记数法返回,这个怎么解决比较好?

k3bvogb1

k3bvogb11#

看了下 FloatCodec 里面直接 Float.toString(value),结果就是按科学记数法输出的,我建议增加一个 非科学记数法 的SerializerFeature,在每个数值型 Codec 实现类里,如果该SerializerFeature存在则按非科学记数法输出,不存在则用现有方式输出。

pn9klfpd

pn9klfpd2#

很好的建议,下个版本会实现

zfycwa2u

zfycwa2u3#

新增加SerializerFeature.WriteBigDecimalAsPlain功能,但只能对BigDecimal有效

cngwdvgl

cngwdvgl4#

不好实现,你能否使用BigDecimal代替float/double?

goucqfw6

goucqfw65#

貌似没有实现吧?
我用bigdecimal 0.0000000703 依旧转化成了 7.03e-8

后续更新
参见
https://github.com/alibaba/fastjson/wiki/ObjectSerializer_cn;
可以在应用启动时往fastjson加上针对bigdecimal的处理

qkf9rpyu

qkf9rpyu6#

很高兴两位重视这个问题 👍

相关问题