|
|
1
28
实数类型更适合于数字,因为您可以与它们进行适当的比较(例如,price<10.0). 但是,它们确实会带来精度方面的问题(比如3.0=2.99999999)。在这种情况下,最好使用本机十进制类型,但如果没有这种类型,我会将价格存储为以美分为单位的整数(例如,6.77=>677),然后除以100,然后将数字呈现给用户。这样你就得到了数据库中的数字运算,并得到了精度(假设精度为1分就足够了)。 |
|
|
2
9
两者都不合适。 价格应该存储为十进制或整数,因为它们有固定的小数点。使用浮点不是一个好主意,因为值将被舍入。字符串是有问题的,因为您将无法进行比较。 |
|
|
3
4
中详细解释了解决此问题的“最佳实践”解决方案 this SO question . 使用整数也是可以接受的选择。无论如何,最好在整个应用程序中使用相同的解决方案,以便于比较和计算。 number_format() 或者别的什么。 |
|
|
4
2
在考虑字符串或数字(int、double等)数据类型时,我经常问自己的问题是,“我要用它们来做数学计算吗?”如果答案是肯定的,我必须假设你的情况是肯定的,我就用数值。如果答案是“否”,则选择字符串值。 |
|
|
5
1
对于您提供的信息,最好只使用整数,这样您就可以使用数值而不是字符串值进行排序和查询。int比浮点更好,因为它不会有奇怪的半美分问题。 也就是说,你不希望6.77大于12.54,也不希望价格是6.4312313141。 |
|
|
6
0
易于排序,无舍入问题,易于以任何格式显示给用户。 |
|
|
7
0
Time and Money sourceforge上的项目。充分披露:我实际上没有仔细看过这个项目,但它似乎会给你一些处理这些事情的好主意。 |