在MySQL中,存储产品价格(或一般货币)的首选列类型是什么?Google了解到我经常使用FLOAT的DECIMAL,但我想知道哪一个更好.
我存储的价格从0.01到25.00不等.当然,更高的价值也是可能的.(注意:我不是要求复制面食代码,我只是给你更多的信息,可以帮助你形成一个更完整的答案).
谢谢
She*_*eff 79
十进制是我会使用的
Decimal/Numeric和Float:Float之间的基本区别是近似数字数据类型,这意味着并非数据类型范围中的所有值都可以精确表示.十进制/数字是固定精度数据类型,这意味着数据类型reane中的所有值都可以精确和精确地表示.
从Decimal或Numeric转换为float会导致一些精度损失.对于十进制或数字数据类型,SQL Server将每个特定的精度和比例组合视为不同的数据类型.DECIMAL(4,2)和DECIMAL(6,4)是不同的数据类型.这意味着11.22和11.2222是不同的类型,但浮动不是这种情况.对于FLOAT(6),11.22和11.2222是相同的数据类型.
Ali*_*waz 27
字段类型"十进制"是好的.
如果您的价格较高,那么您可以使用,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).
Raz*_*zie 16
我不会使用float,因为它可以给出舍入错误,因为它是浮点类型.
使用小数:
"DECIMAL和NUMERIC类型用于存储保持精确精度的重要值,例如货币数据."
请参阅:http://dev.mysql.com/doc/mysql/en/numeric-types.html
我更喜欢INT(价格乘以100),它解决了其他软件中的浮点问题.