0

MYSQL中可以存储整数或双精度值的字段类型是什么我的意思是在同一列中可以存储整数|| 双打?这是什么类型或我该怎么做?

任何努力将不胜感激。

4

5 回答 5

1

没有满足您要求的本机 MySQL 数据类型。

一般来说,DECIMAL 数据类型符合要求,尽管这是一个精确的十进制值,而不是浮点类型的近似值。并且由于它有一个固定的小数点,可以存储的数值范围比 DOUBLE 类型小几个数量级。

一种选择是使用VARCHAR列,并存储值的字符表示。

另一个(笨拙的)选项是使用BIT(64)列。

但似乎使用这些方法中的任何一种,您都需要某种类型的指示符来确定存储了哪种类型的值。这两种方法都有一些缺点。一个很大的缺点是这些将允许存储“无效”值。

我会考虑的一种方法(如果我有这个要求)是使用两列,其中一个INTEGER,另一个DOUBLE,并指定优先级,并允许 INTEGER 列中的 NULL 值表示该值存储在DOUBLE列中.

于 2013-01-30T04:44:59.557 回答
0

INT - 可以有符号或无符号的正常大小的整数。如果有符号,则允许的范围是从 -2147483648 到 2147483647。如果没有符号,则允许的范围是从 0 到 4294967295。您可以指定最多 11 位的宽度。

DOUBLE(M,D) - 不能无符号的双精度浮点数。您可以定义显示长度 (M) 和小数位数 (D)。这不是必需的,默认为 16,4,其中 4 是小数位数。DOUBLE 的小数精度可以达到 53 位。REAL 是 DOUBLE 的同义词。

于 2013-01-30T04:23:48.850 回答
0

您可以使用双精度数据类型,并在您的语言(php,ja)中将该值显示为整数。

于 2013-01-30T04:28:05.407 回答
0

我认为mysql中没有这种数据类型。可能您可能想要 varchar,并在服务器端代码(php,java ...)中转换为正确的数据类型,但这可能会导致性能开销。我不知道你怎么会有这么奇怪的数据类型要求。如果必须以这种方式存储数据,请考虑添加一个额外的列来标记数据类型。

于 2013-01-30T04:29:43.047 回答
0

我想你可能想不明白计算机是如何存储数字的:数字要么是整数,要么是浮点数。处理器算术逻辑单元 (ALU) 中的每个都有不同的电路。你不能有一个两者兼而有之的数字。

于 2013-01-30T05:19:27.860 回答