在MySQL中,存储产品价格(或通用货币)的首选列类型是什么?谷歌让我知道 DECIMAL 或 FLOAT 经常被使用,但我想知道哪个更好。
我要存储从0.01到25.00的价格,当然也可能存在更高的值。(注:我不是要求复制粘贴的代码,只是提供更多信息以帮助您形成更完整的答案)。
谢谢。
我要存储从0.01到25.00的价格,当然也可能存在更高的值。(注:我不是要求复制粘贴的代码,只是提供更多信息以帮助您形成更完整的答案)。
谢谢。
我会使用Decimal数据类型
Decimal/Numeric和Float之间的基本区别:Float是近似数字数据类型,这意味着在数据类型范围内并不能准确表示所有值。Decimal/Numeric是定点精确数据类型,这意味着数据类型范围内的所有值都可以精确表示,并带有精度和比例。
从Decimal或Numeric转换为float可能会导致一些精度损失。对于Decimal或Numeric数据类型,SQL Server将每个精度和比例的特定组合视为不同的数据类型。DECIMAL(4,2)和DECIMAL(6,4)是不同的数据类型。这意味着11.22和11.2222是不同类型,尽管对于float来说情况并非如此。对于FLOAT(6),11.22和11.2222是相同的数据类型。
“Decimal”字段类型不错。
如果你有更高的价格,那么可以使用product_price decimal(6,2) NOT NULL,
即可存储带有小数点的六位价格数字中的前两位。
字段product_price decimal(6,2) NOT NULL,
的最大值将储存高达9999.99的价格。
如果所有价格在0.01到25.00之间,则product_price decimal(4,2) NOT NULL,
将是不错的选择,但如果你的价格更高,则可以在decimal(4,2)
中设置任何值。
我不会使用浮点数,因为它是一种浮点类型,可能会导致舍入误差。
请使用 decimal:
"DECIMAL 和 NUMERIC 类型用于存储需要保留精确精度的值,例如货币数据。"