【问题标题】:Float values round itselves in MySQL浮点值在 MySQL 中循环
【发布时间】:2014-05-05 23:20:10
【问题描述】:

我刚刚遇到了一个很奇怪的情况。

我正在尝试通过表单传递浮点/双精度值(320.25 和 660.60)以将其保存在 MySQL 数据库中。为这些值准备的字段设置为双精度 (6.0)。

问题是,当我输入 320.25 时,只保存了 320。当我输入 660.60 - 突然 667 保存在该特定字段中。我什至尝试用逗号 (,) 来做,但结果没有改变。

可能是什么问题?我没有在任何地方使用 round() 或类似的东西。

感谢您的帮助。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    在 MySQL double 中,根据手册:double(m,d) 是:“m” = 数字总数,d = 小数位数。

    因此,在您的设置中,您想使用 double(6,2) 来保存最大 9999,99 或 double(8,2) 来保存 999999,99

    【讨论】:

      【解决方案2】:

      简单。你告诉 mysql 在你的浮点数中只显示 6 数字:

      mysql> create table foo (
          dbl1 double(6,0),
          dbl2 double,
          dbl3 double(6,2));
      Query OK, 0 rows affected (0.01 sec)
      
      mysql> insert into foo (dbl1, dbl2, dbl3) values (1.234567, 1.234567, 1.234567);
      Query OK, 1 row affected (0.00 sec)
      
      mysql> select * from foo;
      +------+----------+------+
      | dbl1 | dbl2     | dbl3 |
      +------+----------+------+
      |    1 | 1.234567 | 1.23 |
      +------+----------+------+
      1 row in set (0.00 sec)
      

      注意6,0 字段如何显示NO 小数位,以及6,2 浮点数如何显示2 个小数位。

      【讨论】:

        【解决方案3】:

        您可以使用decimal(6,2)double(6,2) 第一个数字代表所有数字,第二个数字代表小数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-14
          相关资源
          最近更新 更多