MongoDB Java更新时如何将浮点值转换为整数?
解决MongoDB乘积结果转整数的问题
你可以通过MongoDB的类型转换或取整操作符,将$multiply的结果转为整数,根据业务需求选择以下方案:
1. 截断小数转为整数($toInt)
适合仅保留整数部分、舍弃所有小数的场景,例如1.9转成1,2.1转成2。
修改后的Java代码:
final Bson update = set("percent_view", new BasicDBObject("$toInt", new BasicDBObject("$multiply", Arrays.asList("$viewtime", percent)) ) );
2. 四舍五入取整($round)
需要将结果四舍五入到最近整数时使用,例如1.4转1,1.6转2。
代码示例:
final Bson update = set("percent_view", new BasicDBObject("$round", Arrays.asList(new BasicDBObject("$multiply", Arrays.asList("$viewtime", percent)), 0) ) );
注:$round的第二个参数代表保留小数位数,设为0即实现取整。
3. 向下取整($floor)
无论小数部分是多少,取小于等于当前值的最大整数,例如1.9转1,-1.1转-2。
代码示例:
final Bson update = set("percent_view", new BasicDBObject("$floor", new BasicDBObject("$multiply", Arrays.asList("$viewtime", percent)) ) );
4. 向上取整($ceil)
取大于等于当前值的最小整数,例如1.1转2,-1.9转-1。
代码示例:
final Bson update = set("percent_view", new BasicDBObject("$ceil", new BasicDBObject("$multiply", Arrays.asList("$viewtime", percent)) ) );
根据实际业务场景选择对应方式即可,比如统计类场景常用四舍五入,计数类场景常用截断转整数。
内容的提问来源于stack exchange,提问作者khateeb
相关产品推荐
相关产品推荐

