如何用加号或减号显示数字字符串值
Posted
技术标签:
【中文标题】如何用加号或减号显示数字字符串值【英文标题】: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
【问题讨论】:
这能回答你的问题吗? How to prefix a positive number with plus sign in PHP 你要找的大概是sprintf("%+.1f", $num1)
只需使用NumberFormatter
类来格式化数字。我已经发布了一个如何将其用作答案的示例。
jogin shar "如果一个答案解决了您的问题,请考虑接受这个答案。这里是How does accepting an answer work?。然后返回这里并使用勾选/复选标记执行相同操作,直到它变为绿色。这会通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,可能想要发布(更多)答案。您将获得积分,并鼓励其他人帮助您。欢迎使用 Stack!"
【参考方案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 >= 5.3.0, PHP 7, PECL intl >= 1.0.0))
中可用。虽然是非常好的和正确的解决方案。以上是关于如何用加号或减号显示数字字符串值的主要内容,如果未能解决你的问题,请参考以下文章