簡體   English   中英

在節點/貓鼬中使用$ inc時的MongoDB數字精度

[英]MongoDB number precision when using $inc in node/mongoose

我目前正在使用MongoDB建立數據庫模型,在該數據庫中,用戶可以在帳戶之間轉移資金並購買產品,這些產品的價值從其當前余額中扣除。 對於產品值和用戶余額,我的精度為兩位小數。

問題是,當我使用$ inc運算符對小數點后的值進行加減運算時,在用戶文檔中會出現一些精度錯誤,如下所示:

{
    "balance": 31513.210000000003,
}

我正在使用節點和貓鼬來操縱我的數據庫,並且我知道該語言的浮點數不正確,但是我想知道是否有任何方法可以克服我的mongodb數據庫中的這個問題並迫使它始終與小數點后兩位。因此,當我查詢余額為正的用戶時,不會檢測到0.00000000003之類的值,因為它應該為0。

有什么辦法可以在mongodb中控制它嗎?

除了使用使用浮點數學的double之外,您還可以選擇其他幾種方法,這些方法具有不同的優缺點。

整數

余額不是全部單位,而是小數單位。 因此,您將123.45存儲為12345。如果數學是加法和減法,那么這很容易,並且需要確保的是,只要您表示一個值,就插入。 在適當的位置,但是您可以為此編寫一個函數。

賓語

用兩個整數表示:一個用於整數部分,一個用於小數部分(123和45)。 這使數學運算更加困難,但可能使輸出更易於管理,並且更難以意外輸出錯誤的值。

使用字符串,您將必須編寫自己的所有數學運算,但是輸出可以很簡單,因為存儲的值為“ 123.45”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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