value: 0.00000001 会被序列化时 会被处理为 value: 1e-8,不需要按科学记数法返回,这个怎么解决比较好?
k3bvogb11#
看了下 FloatCodec 里面直接 Float.toString(value),结果就是按科学记数法输出的,我建议增加一个 非科学记数法 的SerializerFeature,在每个数值型 Codec 实现类里,如果该SerializerFeature存在则按非科学记数法输出,不存在则用现有方式输出。
pn9klfpd2#
很好的建议,下个版本会实现
zfycwa2u3#
新增加SerializerFeature.WriteBigDecimalAsPlain功能,但只能对BigDecimal有效
cngwdvgl4#
不好实现,你能否使用BigDecimal代替float/double?
goucqfw65#
貌似没有实现吧?我用bigdecimal 0.0000000703 依旧转化成了 7.03e-8
后续更新参见https://github.com/alibaba/fastjson/wiki/ObjectSerializer_cn;可以在应用启动时往fastjson加上针对bigdecimal的处理
qkf9rpyu6#
很高兴两位重视这个问题 👍
6条答案
按热度按时间k3bvogb11#
看了下 FloatCodec 里面直接 Float.toString(value),结果就是按科学记数法输出的,我建议增加一个 非科学记数法 的SerializerFeature,在每个数值型 Codec 实现类里,如果该SerializerFeature存在则按非科学记数法输出,不存在则用现有方式输出。
pn9klfpd2#
很好的建议,下个版本会实现
zfycwa2u3#
新增加SerializerFeature.WriteBigDecimalAsPlain功能,但只能对BigDecimal有效
cngwdvgl4#
不好实现,你能否使用BigDecimal代替float/double?
goucqfw65#
貌似没有实现吧?
我用bigdecimal 0.0000000703 依旧转化成了 7.03e-8
后续更新
参见
https://github.com/alibaba/fastjson/wiki/ObjectSerializer_cn;
可以在应用启动时往fastjson加上针对bigdecimal的处理
qkf9rpyu6#
很高兴两位重视这个问题 👍