[英]Rounding to 2 decimal places in mongodb
我有我的收藏
學生
{
"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 中的值四舍五入為特定精度,也可以同時將其轉換為雙精度值。 例如 : -
Scala> val s :BigDecimal = 10.232 s: BigDecimal = 10.232
scala> s.setScale(2, BigDecimal.RoundingMode.HALF_UP).toDouble res1: Double = 10.23 // 轉換為 DOUBLE
scala> s.setScale(2, BigDecimal.RoundingMode.HALF_UP) res2: scala.math.BigDecimal = 10.23 // Rouding Off
因此,在 scala 中,您可以使用 setScale 而不是使用 math.Round。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.