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

PHP:修改价格使其看起来像样?

  •  0
  • Industrial  · 技术社区  · 16 年前

    如果你手工输入价格也很容易做到,但据说我们会有一个存储价格的数据库,每天根据货币变化进行更新。 因此,价格会自动计算,最终看起来像“1547,83”,这对眼睛来说一点都不好。

    3 回复  |  直到 11 年前
        1
  •  6
  •   Mark Baker    16 年前

    money_format() number_format() 对于货币价值而言,后者通常更好(尽管名称不同)

    根据Pekka的评论,数字\格式()和圆形()的组合可能会给出您想要的:

    $value = 1547.83;
    
    echo number_format($value,2),'<br />';
    echo number_format(round($value,1),2),'<br />';
    echo number_format(round($value,0),2),'<br />';
    echo number_format(round($value,0)-0.01,2),'<br />';
    echo number_format(round($value,-1),2),'<br />';
    

    1,547.83
    1,547.80
    1,548.00
    1,547.99
    1,550.00
    

    编辑2

    稍微有点幻想,根据实际值确定舍入水平:

    $value = 1547.83;
    $pos = 3 - floor(log10($value));
    echo number_format(round($value,$pos)-0.01,2),'<br />';
    
    //  gives 1,547.99
    
    $value = 1547982.83;
    $pos = 3 - floor(log10($value));
    echo number_format(round($value,$pos)-0.01,2),'<br />';
    
    //  gives 1,547,999.99
    
        2
  •  1
  •   Henri    16 年前

    这取决于一些规则。你是要向上取整还是向下取整?如果价格是1.93,你想定为1.95还是1.90还是1.99?。

    我认为你只想一角钱,而不是整个价格。

    首先,定义应该进行哪些舍入,对我来说有意义的是:

    • x、 00-x,20==>(x-1),99
    • x、 21-x,75==>x,49或x,55

    一旦你定义了这些规则,它只是一个(数字)转换。这与其说是一个编程难题,不如说你应该定义舍入规则。

        3
  •  0
  •   Tomas    16 年前

    我们真的认为1.90和3.99是正确的吗 用户 友好的。

    用户 相当于2.00或4.00。99结尾是一个推销员的把戏,让用户误判价格。

    1.99绝不是你所说的“好看的眼睛”。

    如果你想为销售人员做点好事,你可以做一些可怕的事情,比如:

    $newprice = ceil($original_price) - 0.01;