不只是mongo,大部分的数据库都存在这个问题,各种合计都会有误差,为此有一个数据类型叫Decimal,使用文本存放数字,数据库合计之类的就没有误差了。当然程序中也要有这个数据类型,然后操作各种蛋痛各种不直观。替代的方案是直接用int,以分为单位而不是以元为单位。当然前台显示时要各种处理,反正就没一个简洁的方案。
这是浮点数精度问题,在java本身做浮点计算也这样,丢失精度。如果是算钱的话,你要用分为单位,存整型,不要存double
浮点数精度问题,要是不介意,你可以数据库里面存varchar或者字符型,拿出来就和你存进去的一样了。只是有点不太方便计算。
要精确可以在数据库用varchar(n),然后你这边用BigDecimal big = new BigDecmal("你的小数");进行计算,这样两边都是准确的。