将 .NET 小数存储到 MySQL 中的最佳字段定义是什么?

发布于 2024-12-03 20:18:20 字数 274 浏览 0 评论 0原文

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

我计划使用 Dapper 作为轻量级 ORM。

I need to store decimals into MySQL, which can have a varying precision. Therefore I would be interested to know which MySQL field type is absolutely equivalent to .NET's decimal structure, if any.

I plan to use Dapper as a lightweight ORM.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染柒℉ 2024-12-10 20:18:20

.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<如果为 /code> 分配更大的精度,则会占用更多空间。

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

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

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

The .net decimal can be different datatypes under the hood.

.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.  

Warning
Note that according to Jon Skeet, decimal can be declared in lots of ways, but will always be a FLOAT under the hood, with all the rounding errors that brings, you have been warned.
See: SQL decimal equivalent in .NET

MySQL's DECIMAL takes up more space if you assign it a larger precision.

From the manual: http://dev.mysql.com/doc/refman/5.5/en/precision-math-decimal-changes.html

Values for DECIMAL columns in MySQL 5.5 are stored using a binary format that packs nine decimal digits into 4 bytes.

The largest number of digits is 65, divided by 9 = 8 bytes, an INT128.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文