Как показать числовое значение строки с плюсом или минусом - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь получить числовое значение с плюсом и минусом

<?php
$num1= '-12.20000';
$num2= '+18.20000';

echo rtrim(str_replace('.00', '', number_format($num1, 2));
echo rtrim(str_replace('.00', '', number_format($num2, 2));

?>

Нужен вывод типа

-12.2
+18.2

Ответы [ 3 ]

0 голосов
/ 28 февраля 2020

Вместо использования сложных функций в PHP просто используйте нативные вещи, которые PHP приносит с собой. Одна из фантазий c вещь этого типа - класс NumberFormatter.

$formatter = new NumberFormatter( 'en_GB', NumberFormatter::DECIMAL );
$formatter->setTextAttribute(NumberFormatter::POSITIVE_PREFIX, '+');  
$num1= '-12.20000';
$num2= '+18.20000';

echo $formatter->format($num1) . PHP_EOL;
echo $formatter->format($num2) . PHP_EOL;

Точно делает то, что вы хотите.

Вывод: https://3v4l.org/UQX3Y

0 голосов
/ 28 февраля 2020

Я не вижу точно, что вам нужно. Примеров недостаточно, а описание задачи недостаточно.

Число отформатировано со знаком и двумя десятичными знаками. Если последний di git равен 0, он удаляется с помощью preg_replace ().

$data = ['-12.20000','+18.20000', 234.0, 2.1234];

foreach($data as $value){
  $formatVal = sprintf("%+0.2f",$value);
  $formatVal = preg_replace('~(\.\d)0$~','$1',$formatVal);

  echo $value.' -> '.$formatVal."<br>\n";
}

Вывод:

-12.20000 -> -12.2
+18.20000 -> +18.2
234 -> +234.0
2.1234 -> +2.12

Если результат требуется только с одним десятичным знаком , вы можете использовать

$formatVal = sprintf("%+0.1f",$value);

без preg_replace.

0 голосов
/ 28 февраля 2020

В python вы можете сделать это так:

def returnWithSign(str):
      n = float(str)
      if n>0:
         return '+{}'.format(n)
      return n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...