Алгоритм округления цен, до десятков рублей.

16.04.2024
Задача: Нужно округлять цены, но не просто копейки, а именно округлять копейки, рубли и десятки рублей. Т.е. 1 893.60 округляется до 1 900.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?


  function myRound($s)
  {
    //Округляем копейки
    $sRet = round($s);
    $iLen = strlen($sRet);
    
    // Превращаем строку в массив символов
    $chars = preg_split('//', $sRet, -1, PREG_SPLIT_NO_EMPTY);
    //- $sTMP = $chars[$iLen-3].'.'.$chars[$iLen-2].$chars[$iLen-1];
    
    // Формируем из первых цифр, которые округлять не нужно, начало цены.
    for($i = 0; $i < $iLen-2; $i++)
    {
      $sTMP .= $chars[$i];
    }
    $sTMP .= '.'.$chars[$iLen-2].$chars[$iLen-1];
    
    // Выводим отладочную информацию
    echo '$sRet: '.$sRet.'<br />';
    echo '$iLen: '.$iLen.'<br />';
    echo '$sTMP: '.$sTMP.'<br />';
    
    // Округляем получившееся число и добавляем в конец два нули,
    // для сохранения исходной длины 
    return round($sTMP).'00';
  }


  $s1 = '113869.5';  
  echo myRound($s1). '<br />';


Категории: PHP
Яндекс.Метрика