您的位置:首页 > 游戏 > 手游 > 网架公司排名_网页开发三件套_线上销售渠道有哪几种_域名归属查询

网架公司排名_网页开发三件套_线上销售渠道有哪几种_域名归属查询

2025/3/10 16:13:33 来源:https://blog.csdn.net/c364902709/article/details/143734326  浏览:    关键词:网架公司排名_网页开发三件套_线上销售渠道有哪几种_域名归属查询
网架公司排名_网页开发三件套_线上销售渠道有哪几种_域名归属查询

问题:使用SpringBoot2.x版本进行MongoDB的存储操作,Float类型数据出现精度丢失问题

解决方案如下:

情况一、字段类型为JSONObject进行存储时

设置值时采用Decimal128类型
Decimal128 value = new Decimal128(new BigDecimal(declaredField.get(object).toString()));

情况二、保存的对象为Java对象时

对象Float属性中增加注解

 @Field(targetType = FieldType.DECIMAL128)
 private Float qmax;

编写WritingConverter

import org.bson.types.Decimal128;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.WritingConverter;import java.math.BigDecimal;
@WritingConverter
public class FloatToDecimal128Converter implements Converter<Float, Decimal128> {@Overridepublic Decimal128 convert(Float aFloat) {if(aFloat!=null){return new Decimal128(new BigDecimal(String.valueOf(aFloat)));}return null;}
}

编写ReadingConverter

import org.bson.types.Decimal128;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;@ReadingConverter
public class Decimal128ToFloatConverter implements Converter<Decimal128, Float> {@Overridepublic Float convert(Decimal128 decimal128) {if(decimal128!=null){return decimal128.floatValue();}return null;}
}

注册Converter

import com.hd.storage.module.dataimport.converter.Decimal128ToFloatConverter;
import com.hd.storage.module.dataimport.converter.FloatToDecimal128Converter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;import java.util.Arrays;
@Configuration
public class MongodbConfig {@Beanpublic MongoCustomConversions mongoCustomConversions() {return new MongoCustomConversions(Arrays.asList(new FloatToDecimal128Converter(),new Decimal128ToFloatConverter()));}
}

 参考:

【MongoDB】springboot项目里BigDecimal和Decimal128类型的转换_51CTO博客_mongodb bigdecimal

https://stackoverflow.com/questions/34212545/setup-custom-converters-in-spring-data-mongo

Custom Conversions :: Spring Data MongoDB

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com