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

时间:2011-09-08 13:11:37

标签: c# .net mysql decimal precision

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

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

1 个答案:

答案 0 :(得分: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.  

警告
请注意,根据Jon Skeet的说法,decimal可以通过多种方式声明,但始终是FLOAT,并且会带来所有舍入错误,并且已经发出警告。
请参阅:SQL decimal equivalent in .NET

如果为其分配更大的精度,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。