mysql 将浮点数转换为双精度数
mysql convert float to double
需要更改 table 字段(带数据)的类型。
从 Float 类型到 Double 类型。
执行此操作的代码:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE NULL DEFAULT NULL AFTER `id`;
但是我遇到了一个问题:
所有小数变质:
旧值 -> 新值:
129.8 -> 129.8000030517578
117.9 -> 117.9000015258789
99.2 -> 99.19999694824219
如何在不损坏数据的情况下更改字段类型?
试试这个:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE(10,2) NULL DEFAULT NULL AFTER `id`;
你不能。 FLOAT 和 DOUBLE 类型表示 approximate 数值数据值。它们的存储方式可以包含各种数字(从非常大到非常小),但代价是有点不准确。
有关详细信息,请参阅 Floating point types。
如果您需要这种精度,请改用 Fixed point types,例如 DECIMAL。
试试这个:-
ALTER TABLE `table`
CHANGE COLUMN `my_value` `my_value`
decimal(10,2) NULL DEFAULT NULL AFTER `id`;
为此,我这样做了:
1 个变体:
先转换成VARCHAR(255):
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
VARCHAR(255) NULL DEFAULT NULL AFTER `id`;
第二次转换为DOUBLE:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE NULL DEFAULT NULL AFTER `id`;
2 种变体:
先转换成DOUBLE(10,2):
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE(10,2) NULL DEFAULT NULL AFTER `id`;
第二次转换为DOUBLE:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE NULL DEFAULT NULL AFTER `id`;
会不会有什么问题?
需要更改 table 字段(带数据)的类型。 从 Float 类型到 Double 类型。 执行此操作的代码:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE NULL DEFAULT NULL AFTER `id`;
但是我遇到了一个问题: 所有小数变质: 旧值 -> 新值:
129.8 -> 129.8000030517578
117.9 -> 117.9000015258789
99.2 -> 99.19999694824219
如何在不损坏数据的情况下更改字段类型?
试试这个:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE(10,2) NULL DEFAULT NULL AFTER `id`;
你不能。 FLOAT 和 DOUBLE 类型表示 approximate 数值数据值。它们的存储方式可以包含各种数字(从非常大到非常小),但代价是有点不准确。 有关详细信息,请参阅 Floating point types。
如果您需要这种精度,请改用 Fixed point types,例如 DECIMAL。
试试这个:-
ALTER TABLE `table`
CHANGE COLUMN `my_value` `my_value`
decimal(10,2) NULL DEFAULT NULL AFTER `id`;
为此,我这样做了:
1 个变体: 先转换成VARCHAR(255):
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
VARCHAR(255) NULL DEFAULT NULL AFTER `id`;
第二次转换为DOUBLE:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE NULL DEFAULT NULL AFTER `id`;
2 种变体: 先转换成DOUBLE(10,2):
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE(10,2) NULL DEFAULT NULL AFTER `id`;
第二次转换为DOUBLE:
ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value`
DOUBLE NULL DEFAULT NULL AFTER `id`;
会不会有什么问题?