gpt4 book ai didi

mongodb - 在 mongodb 中四舍五入到小数点后两位

转载 作者:可可西里 更新时间:2023-11-01 10:41:33 25 4
gpt4 key购买 nike

我有我的收藏作为

学生

{
"first_name":"Harew",
"last_name":"Jackson",
"class":14,
"fee": [
{ "tuition":48500.2456, "transportation":500 }
]
}

我需要根据 fee = 4500.24 过滤学生,它应该显示所有学生的费用为 4500.24,忽略小数点后的其他数字。

我在MongoDB: How to get N decimals precision in a query中搜索过precision-in-a-query 但这里提供的解决方案在我的场景中不起作用,因为 "$mod": [ "$amount.value", 0.01 ] 不适用于 BigDecimal 类型,在我的收藏中,费用类型为 BigDecimal.

以下解决方案似乎运行良好,但我不知道如何在 Scala 中实现它

db.collection.find({ 
"$where": function() {
return Math.round(this.fee.school * 100)/ 100 === 1.12;
}
})

最佳答案

您可以轻松地将 BigDecimal 中的值四舍五入为特定精度,如果需要,您还可以同时将其转换为 double 值。例如:-

scala> val s :BigDecimal = 10.232s: BigDecimal = 10.232

scala> s.setScale(2, BigDecimal.RoundingMode.HALF_UP).toDoubleres1: Double = 10.23//转换为 DOUBLE

scala> s.setScale(2, BigDecimal.RoundingMode.HALF_UP)res2: scala.math.BigDecimal = 10.23//舍入

所以在 scala 中,您可以使用 setScale 而不是使用 math.Round。

关于mongodb - 在 mongodb 中四舍五入到小数点后两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41972680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com