C# 将.NET十进制存储到MySQL中的最佳字段定义是什么?

C# 将.NET十进制存储到MySQL中的最佳字段定义是什么?,c#,.net,mysql,decimal,precision,C#,.net,Mysql,Decimal,Precision,我需要将小数存储到MySQL中,它可以具有不同的精度。因此,我想知道哪种MySQL字段类型绝对等同于.NET的结构(如果有的话) 我计划用作轻量级ORM。在后台,.net十进制可以是不同的数据类型 .net formats MySQL ---------------------------------------------------- Decimal(Double) F

我需要将小数存储到MySQL中,它可以具有不同的精度。因此,我想知道哪种MySQL字段类型绝对等同于.NET的结构(如果有的话)


我计划用作轻量级ORM。

在后台,.net十进制可以是不同的数据类型

.net formats                                  MySQL
----------------------------------------------------
Decimal(Double)                              Float
Decimal(Int32)                               DECIMAL
Decimal(Int32())                             DECIMAL
Decimal(Int64)                               DECIMAL
Decimal(Single)                              DECIMAL
Decimal(UInt32)                              DECIMAL
Decimal(UInt64)                              DECIMAL
Decimal(Int32, Int32, Int32, Boolean, Byte)  DECIMAL
//This is really a UINT96.  
警告
请注意,根据Jon Skeet的说法,
decimal
可以以多种方式声明,但始终是一个
FLOAT
,所有四舍五入错误都会给您带来警告。
见:

MySQL的
DECIMAL
如果指定更高的精度,则会占用更多的空间

从手册中:

MySQL 5.5中十进制列的值是使用二进制格式存储的,该格式将9个十进制数字打包成4个字节


最大位数为65,除以9=8字节,即整数128

谢谢,那么对于“标准”.NET十进制数,哪一个最合适呢?在.NET中,小数位数不是固定的,与MySQL相反。@erwin,在MySQL中,小数位数也不是固定的,它只是一个近似值。MSDN说小数位数有28-29个有效数字(),而在MySQL文档中,创建小数字段()时有两个参数,其中小数位数是固定的。我遗漏了什么吗?@erwin,第一个数字是有效数字的数量,第二个是显示提示,这些数字中有多少在十进制分隔符后面。十进制数(10,3)可以容纳
999999.999
max,十进制数(10,9)可以容纳9.999999999.max.相同的精度,但不同的表示方式..净十进制数在引擎盖下不能是不同的数据类型。它可以在其构造函数中接受不同的值,但值本身始终是浮点小数类型。