mysql - MySQLの列タイプを浮動小数点から倍精度に変更し、値をそのまま保存する方法は?

原文 mysql sql migration

データ型をfloatからdoubleに変更しようとすると、すべての10進数値も変更されます。
たとえば、0.3は0.30000001192092896になります。これを回避するには?
使うだけ

ALTER TABLE `table1` MODIFY `weight` double;
答え
「2進数の小数部が10進数に直接一致しない」および「浮動小数点数が等しいかどうかを比較しない」というすばらしい世界へようこそ...

ALTERの後、次のことを試すことができます。

UPDATE table1 set weight = ROUND(weight, 7);


(または、7ではなく6を試してください)、余分な変換ノイズを取り除きます...
関連記事

php - ドキュメント対応のajaxのjQueryがhtmlを挿入し、htmlがすぐに消える

mysql - MySQLテーブルの列を無効にするにはどうすればよいですか?

php - CakePHP:HABTMデータの保存MySQLエラー

php - PHPを使用してExcelからMySQLにデータをアップロードできません

mysql - mysqlの複数のif

mysql - mysqlの「不正な照合順序の組み合わせ」エラーのトラブルシューティング

python - get_or_createで別のオブジェクトを使用してオブジェクトを更新する方法

php - MYSQL / Query Builder / Eloquent-行を列に転置する

php - Laravel SQLはテーブルを作成できません[重複]

mysql - 変数SETを使用してMySQLでORDER BYを使用する方法