mysql 将浮点型转换为双精度型

djm*_*ini 3 mysql double alter-table

需要更改表字段的类型(带数据)。从Float类型到Double类型。执行此操作的代码:

ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value` 
DOUBLE NULL DEFAULT NULL AFTER `id`;
Run Code Online (Sandbox Code Playgroud)

但我遇到了一个问题:所有小数都变质了:旧值 -> 新值:

129.8 -> 129.8000030517578
117.9 -> 117.9000015258789
99.2 -> 99.19999694824219
Run Code Online (Sandbox Code Playgroud)

如何在不损坏数据的情况下更改字段类型?

djm*_*ini 7

为了实现这一目标,我是这样做的:

1 变体:首先转换为 VARCHAR(255):

ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value` 
VARCHAR(255) NULL DEFAULT NULL AFTER `id`;
Run Code Online (Sandbox Code Playgroud)

第二次转换成DOUBLE:

ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value` 
DOUBLE NULL DEFAULT NULL AFTER `id`;
Run Code Online (Sandbox Code Playgroud)

2 变体:首先转换为 DOUBLE(10,2):

ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value` 
DOUBLE(10,2) NULL DEFAULT NULL AFTER `id`;
Run Code Online (Sandbox Code Playgroud)

第二次转换成DOUBLE:

ALTER TABLE `my_table`
CHANGE COLUMN `my_value` `my_value` 
DOUBLE NULL DEFAULT NULL AFTER `id`;
Run Code Online (Sandbox Code Playgroud)

会不会有什么问题呢?