C# 将.NET十进制存储到MySQL中的最佳字段定义是什么?
我需要将小数存储到MySQL中,它可以具有不同的精度。因此,我想知道哪种MySQL字段类型绝对等同于.NET的结构(如果有的话)C# 将.NET十进制存储到MySQL中的最佳字段定义是什么?,c#,.net,mysql,decimal,precision,C#,.net,Mysql,Decimal,Precision,我需要将小数存储到MySQL中,它可以具有不同的精度。因此,我想知道哪种MySQL字段类型绝对等同于.NET的结构(如果有的话) 我计划用作轻量级ORM。在后台,.net十进制可以是不同的数据类型 .net formats MySQL ---------------------------------------------------- Decimal(Double) F
我计划用作轻量级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.相同的精度,但不同的表示方式..净十进制数在引擎盖下不能是不同的数据类型。它可以在其构造函数中接受不同的值,但值本身始终是浮点小数类型。