我的 MySQL 数据库中列的最大可能双精度/浮点数

ide*_*ara 2 mysql database-design datatypes floating-point

我正在开发一个 PHP 应用程序,我需要在其中存储大于 100 万的值,但具有浮点的灵活性。我知道传统的 float 和 double。我希望最多存储两个小数点,并且只处理具有 2 个小数的数字的操作。

我选择了 double 和 unsigned 的列类型,但是每当我存储值大于一百万的行时,它就会被截断为 999999.99

为什么是这样?我正在寻找正确的数据类型/解决方案。如果您能指出我正确的方向,我将不胜感激!

提前感谢您的时间!

干杯。

Ric*_*mes 6

不要(m,n)FLOAT或的末尾使用DOUBLE。这会导致舍入(在底部)或截断(在顶部)。如果需要(m,n),您可能应该使用DECIMAL(m,n).

FLOAT存储 24 个有效的数据(相当于大约 7 个十进制数字;存储=4 个字节),指数范围超过 10 ** +/-38。

DOUBLE 存储 53 位(大约 16 位,8 个字节)并且具有很大的范围。

你的问题很模糊——你在储存“钱”吗?如果是这样,那么你真的应该使用DECIMAL(m,2). m=8最多可让您存储一百万美元(或欧元等)。但是 m 可以随您的需要而变大。(记住在看到数字有多大之前减去 2。) (14,2)最多可以存储一万亿美元,精确到一分钱。它将需要 8 个字节的存储空间。