【问题标题】:How to calculate currency string [closed]如何计算货币字符串
【发布时间】:2015-01-10 00:25:52
【问题描述】:

我正在尝试在 php.ini 中计算两个变量类型“字符串”。 我尝试了所有替代但数量稳定的缺失值。

示例:

$a = "250,000.50";
$b = "30,000.00";
echo $a - $b;

我想返回相同格式的值 ###,###,###.## -String -Decimal - 只返回相同的格式。

注意:我在这里尝试所有链接格式货币...使用正则表达式、sprintf、替换等... 但总是丢失一个数字,因为示例使用格式 en_US 或 EUR。

谢谢!

【问题讨论】:

  • 您希望从 2 个字符串减法中得到什么输出? (注意 - 它们不是数字,它们是字符串,例如 "hello" - "world"
  • 你可以做的是将$a转换为数字$a = "250000.50"; $a_Int = (int)$a;您可以在 google 甚至在 stackoverflow 中阅读更多关于 php 字符串到数字转换的信息
  • @Lashane 我写 - 我想以相同的格式返回值 ###,###,###.## - 所以我不在乎 var 是否是字符串,我只需要返回相同的格式。

标签: php regex string str-replace


【解决方案1】:

您可以使用此功能轻松处理

$a = "250,000.50";
$b = "30,000.00";
function currency($c=0){
    return preg_replace("/[^\d\.]+/iu","",$c);
} 

echo number_format(currency($a) - currency($b) ,2);

【讨论】:

  • 谢谢,:) 代码很简单
  • 我很高兴看到接受我的回答。
【解决方案2】:

字符串的减法会自动为您将字符串转换为数字,但您必须先去掉逗号:

$a = "250,000.50";
$b = "30,000.00";
echo str_replace(',', '', $a) - str_replace(',', '', $b);

哦,将整个内容包装在 number_format 中,使其恢复为逗号格式:

echo number_format( str_replace(',', '', $a) - str_replace(',', '', $b), 2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2019-03-09
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多