首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理MySQL length=22和decimals=31

处理MySQL length=22和decimals=31
EN

Database Administration用户
提问于 2019-06-22 18:22:33
回答 1查看 179关注 0票数 0

我使用MySQL的C api来确定可以存储在特定字段中的最大可能值。

我有下表:

代码语言:javascript
复制
CREATE TABLE test (
    f1 double(4,2),
    f2 double
)

当我使用API获取f1f2的字段信息时,我看到了以下内容:

f1{ [...], length = 4, decimals = 2 }

f2{ [...], length = 22, decimals = 31 }

据我所知,f1可以存储的最大值是99.99 (总长度= 4,所以4-2=小数点之前的2位,小数之后的2位)。

如果一个列类型是DOUBLE,那么它的长度是22,它的十进制是31,那么没有指定(m, d),这是安全的吗?如果是这样的话,那么我们还可以假设这个列可以存储的最大值是1.7976931348623157E+308 (按照文档)吗?这个值会在不同的机器/操作系统之间发生变化吗?

EN

回答 1

Database Administration用户

发布于 2019-06-23 05:36:51

不要在FLOATDOUBLE上使用(m,n)。它实际上是无用的,并导致双圆。

DOUBLE是IEEE-754的“双”,它包含53个重要比特和一个范围,在给定的数字上(超过1.E+308)达到最高值。这对几乎所有语言和机器都是通用的。

今天,几乎没有任何机器/操作系统在表示数字方面偏离IEEE754。从理论上讲,你可以看到不同之处,但我怀疑你会看到。

information_schema.COLUMNS.numeric_precision中的"22“可能来自它需要显示多少字符(但即便如此也没有意义)。我不知道你从哪得到"31“的。

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

https://dba.stackexchange.com/questions/241195

复制
相关文章

相似问题

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