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



我需要在MySQL中存储小数,它可以有不同的精度。因此,我很想知道哪种MySQL字段类型绝对等同于。net的十进制结构,如果有的话。

我计划使用Dapper作为轻量级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,并且会带来所有舍入错误,您已经被警告过了。
参见:.NET中SQL的十进制等价

MySQL的DECIMAL占用更多的空间,如果你给它分配一个更大的精度。

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

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

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

相关内容

最新更新