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

Erw*_*yer 2 .net c# mysql precision decimal

我需要将小数存储到MySQL中,这可能具有不同的精度.因此,我有兴趣知道哪个MySQL字段类型绝对等同于.NET的十进制结构(如果有的话).

我计划将Dapper用作轻量级ORM.

Joh*_*ica 6

.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.  
Run Code Online (Sandbox Code Playgroud)

警告
请注意,根据Jon Skeet的说法,decimal可以通过多种方式声明,但始终是一个FLOAT引人注目的,带来的所有舍入错误,都会被警告.
请参阅:.NET中的SQL十进制等效项

DECIMAL如果为它分配更大的精度,MySQL 会占用更多空间.

从手册:http://dev.mysql.com/doc/refman/5.5/en/precision-math-decimal-changes.html

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

最大位数为65,除以9 = 8字节,即INT128.

  • .NET十进制*不能*是引擎盖下的不同数据类型.它的构造函数可以采用不同的值,但值本身是*always*浮点小数点类型. (5认同)