MySQL:(产品)价格的首选列types?

在MySQL中,用于存储产品价格(或一般货币)的首选列types是什么? Google学会了我经常使用FLOAT的DECIMAL,但我不知道哪一个更好。

我存储的价格从0.01到25.00不等。 当然,更高的价值也是可能的。 (注:我不是要求复制意大利面代码,我只是给你更多的信息,可以帮助你形成一个更完整的答案)。

谢谢

小数是我会用的

Decimal / Numeric和Float:Float之间的基本区别是近似数字数据types,这意味着数据types范围中的所有值都不能完全表示。 十进制/数字是固定精度数据types,这意味着数据typesreane中的所有值都可以用精度和比例精确表示。

从十进制或数字转换为浮点数可能会导致一些精度的损失。 对于“十进制”或“数字”数据types,SQL Server将每种特定的精度和比例组合视为不同的数据types。 DECIMAL(2,2)和DECIMAL(2,4)是不同的数据types。 这意味着11.22和11.2222是不同的types,虽然这不是浮动的情况。 对于FLOAT(6)11.22和11.2222是相同的数据types。

字段types“十进制”是好的。

如果你有更高的价格,那么你可以使用product_price decimal(6,2) NOT NULL,也就是说,你可以存储价格高达6位数,小数点前2位。

字段product_price decimal(6,2) NOT NULL,最大值将存储高达9999.99的价格

如果所有的价格在0.01到25.00之间,那么product_price decimal(4,2) NOT NULL,将是好的,但是如果你有更高的价格,那么你可以用decimal(4,2)来设置任何值。

我不会使用float,因为它可以给舍入错误,因为它是一个浮点types。

使用小数:

“DECIMAL和NUMERICtypes用于存储保存准确的精度非常重要的值,例如货币数据。”

请参阅: http : //dev.mysql.com/doc/mysql/en/numeric-types.html

我更喜欢INT(价格乘以100)来解决其他软件中的浮点问题。