簡體   English   中英

帶兩個小數位的雙精度數

[英]Double with two Decimal Places

我正在使用實體框架來創建包含某些產品的數據庫。 產品有一個名為 Price 的實體,我想保存所有帶兩位小數的價格,即使它是一個整數。

喜歡:
2 = 2.00

5.9 = 5.90

17.99 = 17.99

我不能使用十進制

這是我的產品:

namespace CashRegister.Models
{
    public class Produkt
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public double Preis { get; set; } 
        public bool Preisart { get; set; }
        public bool Deaktiviert { get; set; } = false;
        public List<EinkaufsPosition> EinkaufsPositionen { get; set; }
        public int KategorieId { get; set; }
        public Kategorie Kategorie { get; set; }

    }
}

是否可以像我展示的那樣將其保存在數據庫中以及如何保存?

表示 m.netary 值的數字永遠不應存儲為浮點數或雙精度數。 這是因為浮點數和雙精度數基於二進制系統,因此無法准確存儲某些在十進制系統中具有精確表示的值。 如果您需要對這些值進行數學運算,您遲早會遇到舍入錯誤。

相反,您應該以小數類型存儲 m.netary 值,這可以准確地表示它們,或者更簡單地,將它們存儲為 integer 類型的美分。

您要顯示多少位小數是表示層的工作,而不是數據存儲層的工作。

您可以截斷數字。

截斷為十進制:

 Math.Truncate(valueToBeTruncated * 10) / 10;

截斷為百進制

 Math.Truncate(valueToBeTruncated * 100) / 100;

暫無
暫無

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

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