如何在 mysql 数据库中存储前导零的数字?
How can I store a number with a leading zero in mysql database?
我正在尝试将数字 0.0015 存储在数据库中。我试过 float、integer 但我得到的是零,而不是我输入的确切数字。有没有可以存储这样的值的数据类型?
通常您会使用 DECIMAL
(又名 NUMERIC),具有指定的比例和精度,这里是 docs for it。 FLOAT
应该也可以,但是你需要注意浮点运算的怪癖,所以 DECIMAL
是首选。
如果您看到数据为 0,那么要么是您插入的方式有问题(可能是从文件中导入),要么是您的客户端将其四舍五入为 0,您需要对其进行调整。从上面的 dbfiddle 可以看出,它工作得很好。
这个数字 (0.0015) 不能用二进制表示。请参阅 python 中的以下示例:
Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)] on win32
>>> x = 0.0015
>>> (x + 1) - 1
0.0015000000000000568
这意味着 mysql 中的存储(或任何其他将数字转换为二进制的语言)将显示 representation errors. You can use numeric types that doesn't do any conversion to binary, like decimal or numeric。
我正在尝试将数字 0.0015 存储在数据库中。我试过 float、integer 但我得到的是零,而不是我输入的确切数字。有没有可以存储这样的值的数据类型?
通常您会使用 DECIMAL
(又名 NUMERIC),具有指定的比例和精度,这里是 docs for it。 FLOAT
应该也可以,但是你需要注意浮点运算的怪癖,所以 DECIMAL
是首选。
如果您看到数据为 0,那么要么是您插入的方式有问题(可能是从文件中导入),要么是您的客户端将其四舍五入为 0,您需要对其进行调整。从上面的 dbfiddle 可以看出,它工作得很好。
这个数字 (0.0015) 不能用二进制表示。请参阅 python 中的以下示例:
Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)] on win32
>>> x = 0.0015
>>> (x + 1) - 1
0.0015000000000000568
这意味着 mysql 中的存储(或任何其他将数字转换为二进制的语言)将显示 representation errors. You can use numeric types that doesn't do any conversion to binary, like decimal or numeric。