如何阻止 mysql 舍入浮点值?

how can I stop mysql from rounding float values?

我将货币值作为浮点数存储在 mysql table 中。

问题是,mysql 将数字四舍五入。

例如。 12345.68 四舍五入为 12345.7

我怎样才能阻止它或者我应该使用更好的数据类型?

我想将原始值保留在小数点后两位内。

将适用列的定义从其当前设置更改为:

FLOAT(9,2)

前面代码段中的 2 指示 MySQL 将值保留到小数点后两位。目前可能设置为 1;因此观察到的行为。请随意将 9 更改为更适用的值。

更多关于 floats and precision

Related answer, which advises on not using floats, but instead decimal.

不要使用FLOAT类型。请改用 DECIMAL。 Float 将十进制数转换为二进制数,这会导致四舍五入(精度损失)。 Decimal 将数字存储为小数 - 无转换。

在您的情况下,将列定义为 DECIMAL(12,2) 应该没问题。根据数字的预期大小选择宽度(第一个数字)。示例中,期望大小为12位(包括小数点后的数字)。