3

使用小数(我尝试过它的变体)0.5 总是转换为 5。

我可以存储 1.5 等,没问题...只是好奇我需要如何设置我的数据类型以正确存储“0.5”数字。

谢谢

编辑:

当前数据类型为十进制 (3,1)。我也试过浮动。

我只是通过 $_POST 从表单文本框中检索数字,该文本框仅通过 Java 限制为数字。我从没想过浏览器可能只是将它作为 5 发送,我不知道。

编辑 2:我已经通过 echo 确认 0.5 发送正常,一旦它进入数据库,它就会变成 5

4

2 回答 2

1

你知道,我可能会因此而被否决,但我总是成功(作为一种 hack)将这样的值存储为 VARCHAR,然后 在我需要进行计算时在 PHP 中使用format()函数。对于 SQL 函数,MySQL 似乎仍然可以很好地解析它。只是我的 2 美分 :)

于 2012-08-03T14:31:41.397 回答
1

我在具有各种输入的数据库中使用了十进制值:

我试图重新创建您的问题,但我得到以下信息:

mysql> create table test(myDec decimal(2,2));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into test values(0.5);
Query OK, 1 row affected (0.01 sec)
mysql> insert into test values(.5);
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+-------+
| myDec |
+-------+
|  0.50 |
|  0.50 |
+-------+
2 rows in set (0.00 sec)

鉴于您的编辑,我认为您可能会从国际访问者那里获得值,其中小数点可能使用逗号而不是点来格式化?

mysql> insert into test values('0,5');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from test;
+-------+
| myDec |
+-------+
|  0.50 |
|  0.50 |
|  0.00 |
+-------+
3 rows in set (0.00 sec)
于 2012-08-03T14:33:19.883 回答