如何减去两个数字字符串

时间:2012-10-19 07:31:15

标签: php

我有两个数字类型的字符串,但结果出错了。

$totalamount='41,305.33';
$normalamount='999.72';
echo $total=$totalamount-$normalamount;

是否有其他方法可以使用我自己的代码。

6 个答案:

答案 0 :(得分:2)

错误的原因是字符串上有逗号。

$totalamount = floatval(str_replace(',', '','41,305.33'));
$normalamount = floatval(str_replace(',', '','999.72'));
echo $total = $totalamount-$normalamount;

btw, doubleval() - floatval()

的别名

答案 1 :(得分:2)

以下是number_format()的反向函数。

<强>解决方案:

function number_unformat($number, $dec_point = '.', $thousands_sep = ',') {
    return (float)str_replace(array($thousands_sep, $dec_point),
                              array('', '.'),
                              $number);
}

$totalamount  = number_unformat('41,305.33');
$normalamount = number_unformat('999.72');
$total        = $totalamount - $normalamount;
echo $total;

<强>输出:

40305.61

答案 2 :(得分:2)

由于','字符导致错误值,只需删除它们即可...

$totalamount='41,305.33';
$normalamount='999.72';
echo (double)str_replace(',','',$totalamount)-
     (double)str_replace(',','',$normalamount);

答案 3 :(得分:1)

您可以使用floatval()来实现您的目标,但您需要从字符串中删除“,”

$totalamount = str_replace(',' , '', '41,305.33');
$normalamount = '999.72';
echo $totalamount - $normalamount;

// Writes: 40305.61

答案 4 :(得分:-1)

只需删除逗号即可按预期工作。 无需手动将字符串转换为数字,因为减号运算符会为我们执行此操作。

<?php
$totalamount='41305.33';
$normalamount='999.72';
echo $total=$totalamount-$normalamount;

'41,305.33'-'999.72'导致-958.72的原因是因为PHP一看到逗号就认为它是无效的数字,并将剩余的字符修剪掉。因此,您留下的'41'-'999.72'确实是-958.72

答案 5 :(得分:-1)

您可以使用NumberFormatter

将格式化的数字转换为PHP理解的数字
$fmt = numfmt_create('de_DE', NumberFormatter::DECIMAL);
echo $total = $fmt->parse('41,305.33') - $fmt->parse('999.72');