2

数値型の文字列が2つありますが、結果が間違っています。

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

それを行う方法や自分のコードを発行する方法は他にありますか?

4

6 に答える 6

2

エラーの原因は、文字列にコンマが含まれていることです。

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

ところで、doubleval() — のエイリアスfloatval()

于 2012-10-19T07:34:57.007 に答える
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
于 2012-10-19T07:35:48.137 に答える
2

「、」文字が原因で値が間違っています。単にそれらを削除してください...

$totalamount='41,305.33';
$normalamount='999.72';
echo (double)str_replace(',','',$totalamount)-
     (double)str_replace(',','',$normalamount);
于 2012-10-19T07:36:15.233 に答える
1

floatval()探しているものを達成するために使用できますが、文字列から「、」を削除する必要があります。

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

// Writes: 40305.61
于 2012-10-19T07:37:53.767 に答える
0

カンマを削除するだけで、期待どおりに機能します。マイナス演算子が私たちのためにこれを行うので、文字列を手動で数値に変換する必要はありません。

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

'41,305.33'-'999.72'結果として生じる理由-958.72は、PHPがコンマを検出するとすぐに、それを無効な数字と見なし、残りの文字を削除するためです。したがって、あなた'41'-'999.72'は確かにそれを残されています-958.72

于 2012-10-19T07:48:47.587 に答える
-1

NumberFormatterを使用して、フォーマットされた数値を PHP が理解できる数値に変換できます。

$fmt = numfmt_create('de_DE', NumberFormatter::DECIMAL);
echo $total = $fmt->parse('41,305.33') - $fmt->parse('999.72');
于 2012-10-19T07:58:51.317 に答える