簡體   English   中英

在mongodb中四舍五入到小數點后兩位

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM