首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MySQL小数?

问如何使用MySQL小数?
EN

Stack Overflow用户
提问于 2011-01-29 08:54:15
回答 4查看 277.2K关注 0票数 207

我不能完全掌握MySQL的小数。我需要行能够包含一个从00.0001到99.9999的数字。我该如何构造它才能像这样工作呢?

EN

回答 4

Stack Overflow用户

发布于 2012-03-09 23:27:52

DOUBLE列与十进制列不同,如果您使用DOUBLE列存储财务数据,将会遇到麻烦。

DOUBLE实际上只是FLOAT的双精度(64位而不是32位)版本。浮点数是real numbers的近似表示,它们不是精确的。事实上,像0.01这样的简单数字在浮点或双精度类型中没有精确的表示。

十进制列是精确的表示形式,但对于较小的可能数字范围,它们占用的空间要大得多。要按照您的要求创建一个能够保存从0.0001到99.9999的值的列,您需要以下语句

代码语言:javascript
复制
CREATE TABLE your_table
(
    your_column DECIMAL(6,4) NOT NULL
);

列定义遵循格式DECIMAL(M,D),其中M是最大位数(精度),D是小数点右侧的位数(小数位数)。

这意味着前面的命令创建了一个接受-99.9999到99.9999之间的值的列。您还可以创建一个从0.0000到99.9999的无符号十进制列。

例如,如果您想要一个接受-9999.99到9999.99之间的值的列,命令应该是DECIMAL(6,2)。如您所见,您仍然使用精度6,但仅允许小数位数为2。

有关MySQL DECIMAL的更多信息,official docs始终是一个很好的资源。

请记住,所有这些信息都适用于MySQL 5.0.3和更高版本。如果你使用的是以前的版本,你真的应该升级。

关于MySQL 8.0.17+的更新

浮点列、双精度列和十进制列的Unsigned is deprecated。

票数 476
EN

Stack Overflow用户

发布于 2015-07-02 03:19:29

尽管上面的答案看起来是正确的,但只需要一个简单的解释来让你了解它是如何工作的。

假设您的列被设置为DECIMAL(13,4)。这意味着该列的总大小为13位,其中4位将用于精确表示。

因此,总之,对于该列,您将有一个最大值:999999999.9999

票数 89
EN

Stack Overflow用户

发布于 2017-01-07 07:17:36

评论中有正确的解决方案,但将它们总结为一个答案:

您必须使用DECIMAL(6,4)。

然后你可以有6位数,2位在小数点之前,4位在小数点之后(小数点)。至少在this看来是这样。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4834390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档