Mysql 我应该在数据库中将字段价格存储为int还是float int?

Mysql 我应该在数据库中将字段价格存储为int还是float int?,mysql,database,Mysql,Database,在上一个项目中,我注意到price字段被存储为int,而不是float。这是通过将实际值乘以100来实现的,原因是为了避免遇到浮点问题 这是一个我应该遵循的好做法还是不必要的做法,只会降低数据的透明度?虽然这样可以避免与浮动相关的问题,但将价格保存为整数可能会导致出现问题,最终向客户收取100倍的价格。它还可能使其他程序员感到困惑 我已经在中型电子商务网站上成功地使用了这两种解决方案,但我更喜欢使用浮点数。我认为这是一种很好的使用方法。如果将大数字相乘,浮点数错误可能会给您带来问题。一般来说,在

在上一个项目中,我注意到price字段被存储为int,而不是float。这是通过将实际值乘以100来实现的,原因是为了避免遇到浮点问题


这是一个我应该遵循的好做法还是不必要的做法,只会降低数据的透明度?

虽然这样可以避免与浮动相关的问题,但将价格保存为整数可能会导致出现问题,最终向客户收取100倍的价格。它还可能使其他程序员感到困惑


我已经在中型电子商务网站上成功地使用了这两种解决方案,但我更喜欢使用浮点数。

我认为这是一种很好的使用方法。

如果将大数字相乘,浮点数错误可能会给您带来问题。一般来说,在可能的情况下,财务计算不应该使用浮点数。

有趣的问题

我不会在mysql环境中选择float。过去,该数据类型的精度存在太多问题

对我来说,选择是在
int
decimal(18,4)
之间

我见过真实世界中用于表示浮点值的整数示例。JD Edwards数据表的内部都是这样做的。数量通常除以10000。虽然我确信它在表中更快、更小,但这只是意味着如果我们想用整数做任何事情,特别是除法,我们总是必须将整数转换为十进制值


从编程的角度来看,我总是更喜欢使用
decimal
来获得价格(或者在支持它的RDBMS中使用
money

我决定保持它的简单性,只使用decimal