代码之家  ›  专栏  ›  技术社区  ›  Eugene

用PHP存储价格。什么是双人还是弦乐更好?

  •  9
  • Eugene  · 技术社区  · 16 年前


    有什么建议吗?

    7 回复  |  直到 16 年前
        1
  •  28
  •   Gintautas Miliauskas    16 年前

    实数类型更适合于数字,因为您可以与它们进行适当的比较(例如,price<10.0). 但是,它们确实会带来精度方面的问题(比如3.0=2.99999999)。在这种情况下,最好使用本机十进制类型,但如果没有这种类型,我会将价格存储为以美分为单位的整数(例如,6.77=>677),然后除以100,然后将数字呈现给用户。这样你就得到了数据库中的数字运算,并得到了精度(假设精度为1分就足够了)。

        2
  •  9
  •   quantumSoup    16 年前

    两者都不合适。

    价格应该存储为十进制或整数,因为它们有固定的小数点。使用浮点不是一个好主意,因为值将被舍入。字符串是有问题的,因为您将无法进行比较。

        3
  •  4
  •   Community Mohan Dere    9 年前

    中详细解释了解决此问题的“最佳实践”解决方案 this SO question . 使用整数也是可以接受的选择。无论如何,最好在整个应用程序中使用相同的解决方案,以便于比较和计算。

    number_format() 或者别的什么。

        4
  •  2
  •   sgriffinusa    16 年前

    在考虑字符串或数字(int、double等)数据类型时,我经常问自己的问题是,“我要用它们来做数学计算吗?”如果答案是肯定的,我必须假设你的情况是肯定的,我就用数值。如果答案是“否”,则选择字符串值。

        5
  •  1
  •   Xzhsh    16 年前

    对于您提供的信息,最好只使用整数,这样您就可以使用数值而不是字符串值进行排序和查询。int比浮点更好,因为它不会有奇怪的半美分问题。

    也就是说,你不希望6.77大于12.54,也不希望价格是6.4312313141。

        6
  •  0
  •   Hameed    16 年前

    易于排序,无舍入问题,易于以任何格式显示给用户。

        7
  •  0
  •   AgentConundrum    16 年前

    Time and Money sourceforge上的项目。充分披露:我实际上没有仔细看过这个项目,但它似乎会给你一些处理这些事情的好主意。

    推荐文章