.net 带两个小数位的双精度型

ilmyapht  于 2022-11-19  发布在  .NET
关注(0)|答案(2)|浏览(185)

我正在使用实体框架创建一个数据库与一些产品。产品有一个实体命名的价格,我想保存所有的价格与两位小数,即使它是一个整数。
比如:
2 = 2.00
5.9= 5.90欧元
十七点九九=十七点九九

无法使用十进制

这是我的产品:

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; }

    }
}

是否有可能像我展示的那样将其保存在数据库中?如何保存?

h43kikqp

h43kikqp1#

您可以截断数字。
截断为小数:

Math.Truncate(valueToBeTruncated * 10) / 10;

截断为百分位数

Math.Truncate(valueToBeTruncated * 100) / 100;
8wtpewkr

8wtpewkr2#

表示货币值的数字不应该存储为浮点数或双精度数。这是因为浮点数和双精度数是基于二进制系统的,因此不能存储某些在十进制系统中有精确表示的值。如果你需要用这些值做数学运算,你迟早会遇到舍入误差。
相反,您应该将货币值存储在十进制类型中,这样可以精确地表示它们,或者更简单,将它们存储为整数类型中的美分。
要显示多少位小数是表示层的工作,而不是数据存储层的工作。

相关问题