【问题标题】:How to show number string value with plus or minus如何用加号或减号显示数字字符串值
【发布时间】:2020-02-28 06:28:09
【问题描述】:

我正在尝试用加号和减号获取数值

<?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

【问题讨论】:

  • 你要找的大概是sprintf("%+.1f", $num1)
  • 只需使用NumberFormatter 类来格式化数字。我已经发布了一个如何将其用作答案的示例。
  • jogin shar "如果一个答案解决了您的问题,请考虑接受这个答案。这里是How does accepting an answer work?。然后返回这里并使用勾选/复选标记执行相同操作,直到它变为绿色。这会通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,可能想要发布(更多)答案。您将获得积分,并鼓励其他人帮助您。欢迎使用 Stack!"

标签: php string


【解决方案1】:

我看不出你到底需要什么。示例不够多,您对任务的描述也不够充分。

数字格式为带符号和 2 位小数。如果最后一位是 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。

【讨论】:

    【解决方案2】:

    在python中,你可以这样做:

    def returnWithSign(str):
          n = float(str)
          if n>0:
             return '+{}'.format(n)
          return n
    

    【讨论】:

    • 为什么是python?操作在python中被问到答案吗?我也看不到任何建议使用 python 的标签
    【解决方案3】:

    不要在 PHP 中使用困难的函数,只需使用 PHP 自带的原生功能即可。这些东西的一个奇妙之处是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

    【讨论】:

    • 请提及该函数在更高的 PHP 版本 ((PHP 5 &gt;= 5.3.0, PHP 7, PECL intl &gt;= 1.0.0)) 中可用。虽然是非常好的和正确的解决方案。
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多