用PHP存储价格.什么是更好的双重或字符串?

Eug*_*ene 9 php mysql oop string double

我一直在为我的应用程序制作"产品对象"并且我一直在设置属性,当突然我得到价格属性并偶然发现问题什么类型更好选择?我明白,对于PHP而言,这并不重要,但我们可以说它适用于MySQL.
有什么建议?

Gin*_*kas 26

实数类型对数字更好,因为您可以与它们进行适当的比较(例如,价格<10.0).但是,它们确实会引入精度问题(例如3.0 = 2.9999999999).在这种情况下最好使用原生的Decimal类型,但缺少这一点,我会将价格存储为整数分数(例如,6.77 => 677),然后除以100之前将数字呈现给用户.这样你就可以获得数据库中的数字操作,并获得精度(假设1美分的精度就足够了).


qua*_*oup 8

两者都不合适.

价格应存储为DECIMAL或INT,因为它们具有固定的小数点数.使用浮点数不是一个好主意,因为值会四舍五入.字符串是有问题的,因为您将无法进行比较.