› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
lafuerza
V2EX  ›  MySQL

MySQL 中有很多.10000000001 和.0999999999996 的数据

  •  
  •   lafuerza · Dec 1, 2020 · 3648 views
    This topic created in 2157 days ago, the information mentioned may be changed or developed.
    给甲方做数据清洗和治理,库中某 varchar 类型的字段中有很多类似.10000000001 和.0999999999999 的数据,本应都是.1 才对,比如:

    001.100000000000000001,应该是 1.1 ;
    005.099999999999999996,应该是 5.1 ;
    还有不知道为什么 1 都变成了 001 ( 2 变成 002 、3 变成 003 、4 变成 004 等)。

    之所以采用 varchar,是因为该字段表示一种层级结构,比如 1.1 代表第一章第一节,5.1 代表第五章第五节,6.1.2 代表第六章第一节第二小节,但因为没有原来做该项目的公司留下的文档,所以没办法知道这些数据是怎么存储到 MySQL 中的,只知道原先开发用的 Java 。

    去 Google 英文搜索,也没找到相关内容,有大佬遇到过的吗?
    2 replies  •  2020-12-01 19:53:41 +08:00
    Xusually
        1
    Xusually  
       Dec 1, 2020
    程序处理数据的时候当作 float/double 处理了
    zhangysh1995
        2
    zhangysh1995  
       Dec 1, 2020
    浮点数存储限制,可以强制小数点位数转换。
    用 CAST 转换成 Decimal,https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#function_cast
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1921 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 16:54 · PVG 00:54 · LAX 09:54 · JFK 12:54
    ♥ Do have faith in what you're doing.