【问题标题】:PHP: Calculate with centsPHP:用美分计算
【发布时间】:2016-03-04 13:17:26
【问题描述】:

我遇到了以下问题:我得到了类似的值

2,50
1
2,99

现在我想将它们分成如下两部分:

2 and 50
1 and 00
2 and 99


 $euro      =   explode('.', $item->price)[0]; 

 if(array_key_exists(1, explode('.', $item->price))) { 
    $cent   =   explode('.', $item->price)[1]; 
 }
 else
 { 
    $cent   =   "00"; 
 }

不是我猜我应该这样做;-)

还有一个问题:现在我得到以下值:

2 and 5
1 and 00
2 and 99

但应该是的

2 and 50
1 and 00
2 and 99

【问题讨论】:

  • 你为什么要这样做?要获得 50 而不是 5,您需要使用 strval() ,以便将其转换为字符串, number_format() 是否适合您?还是 money_format() ?
  • 加0变成50你可以使用str_pad($cent,2,0)
  • 我需要这样做,因为网页设计师为 cent-values 添加了一个特殊的类 ;-)
  • 您是否将浮点值或字符串作为输入?

标签: php currency


【解决方案1】:

你可以这样做,这是一种相当短的方法:

$x = '2.55';

$a = explode('.',$x);

$euro = $a[0];
$cent = count($a) >= 2 ? $a[1] : '00';

输出:

2 and 55

请记住,此时您的字符串中不能有两个点。

【讨论】:

    【解决方案2】:

    试试这个:

    <?php
    $value = 2.50;
    $big = ($value%10);
    $small = ($value-$big)*100;
    echo "Value: ".$value."\n";
    echo "Big: ".$big."\n";
    echo "Small: ".$small."\n";
    

    【讨论】:

      【解决方案3】:

      如果您有浮点数(或带有点作为小数分隔符的字符串)作为输入:

      $euro = (string)floor($input);
      $cent = str_pad(($input - $euro) * 100, 2, "0", STR_PAD_LEFT);
      

      如果你得到带有逗号作为分隔符的字符串,请在前面添加:

      $input = str_replace(",", ".", $input);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-17
        • 2013-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多