gpt4 book ai didi

MySql FLOAT 数据类型和超过 7 位数的问题

转载 作者:可可西里 更新时间:2023-11-01 07:14:12 25 4
gpt4 key购买 nike

我们在 Ubuntu 9.04 上使用 MySql 5.0。完整版为:5.0.75-0ubuntu10

我创建了一个测试数据库。里面还有一张测试台。我从插入语句中看到以下输出:

mysql> CREATE TABLE test (floaty FLOAT(8,2)) engine=InnoDb;
Query OK, 0 rows affected (0.02 sec)

mysql> insert into test value(858147.11);
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM test;
+-----------+
| floaty |
+-----------+
| 858147.12 |
+-----------+
1 row in set (0.00 sec)

在 mySql 中设置的比例/精度似乎有问题...或者我错过了什么?

更新:

找到了我们插入的数字之一的边界,这是代码:

mysql> CREATE TABLE test (floaty FLOAT(8,2)) engine=InnoDb;
Query OK, 0 rows affected (0.03 sec)

mysql> insert into test value(131071.01);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test value(131072.01);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM test;
+-----------+
| floaty |
+-----------+
| 131071.01 |
| 131072.02 |
+-----------+
2 rows in set (0.00 sec)

mysql>

最佳答案

掌心!!!!

float 是存储为尾数和指数的 32 位数字。我不是 100% 确定 MySql 将如何拆分存储,但以 Java 为例,他们将使用 24 位作为带符号的尾数,使用 8 位作为指数(科学计数法)。这意味着 FLOAT 可以具有的最大值为 +8388608*10^127,最小值为 -8388608*10^127。这意味着只有 7 位有效数字,而我的 FLOAT 定义使用了 8。

我们要将所有这些 8,2 从 FLOAT 转换为 DOUBLE。

关于MySql FLOAT 数据类型和超过 7 位数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com