数値を10進数で自動的にフォーマットする関数が存在するかどうかを知りたいので、もしあれば:
<?php
// $sql_result["col_number"] == 1,455.75
number_format ($sql_result["col_number"], 2, ".", "");
// will return 1455.75
// $sql_result["col_number"] == 1,455.00
number_format ($sql_result["col_number"], 2, ".", "");
// could I get 1455 instead of 1455.00?
?>
だから私の答えは、丸められているときにのみDBにDECIMALデータ形式がある場合、小数点を削除する方法が存在するかどうかです?
それとも私はそのようなことをしますか?
<?php
// $sql_result["col_number"] == 1,455.00
str_replace(".00", "", (string)number_format ($sql_result["col_number"], 2, ".", ""));
// will return 1455
?>
私は実際にあなたの回避策は他と同じくらい良いと思います。それはシンプルで明確であり、ここでパフォーマンスについて話すことは本当に意味がありません。
floatvalまたは単にfloatにキャストする
php > echo floatval(7.00);
7
php > echo floatval(2.30);
2.3
php > echo floatval(1.25);
1.25
php > echo floatval(1.125);
1.125
php > echo (float) 7.00;
7
php > echo (float) 2.30;
2.3
php > echo (float) 1.25;
1.25
php > echo (float) 1.125;
1.125
エミールが言うように、あなたのものは良いです。ただし、_0
_を削除したい場合は、 _7.50
_も、提案があります、rtrim()
:
_<?php
// if $sql_result["col_number"] == 1,455.50
rtrim(rtrim(number_format($sql_result["col_number"], 2, ".", ""), '0'), '.');
// will return 1455.5
?>
_
私は記事を追加します PHPの小数から無駄なゼロ桁を削除する 必要に応じて小数を失うことなく値をきれいにする良い方法として。
Rtrim()を使用することもできます。これは、余分なゼロではなく、小数点以下1桁を保持したい場合に、余分な0を削除します。 (たとえば、4.50は4.5になります。)小数点以下の桁数を2から他の数値に変更することもできます。
rtrim(rtrim((string)number_format($value, 2, ".", ""),"0"),".");
// 4.00 -> 4
// 4.50 -> 4.5
// 4.54000000 -> 4.54 (if you're doing more decimal places)
実際、私はこの種のことを探して検索を行った人のためにこれを行うために考えることができる最もきれいな方法はこれを行うことだと思います:
( number_format ($sql_result["col_number"], 2) * 100 ) / 100;
米国の通貨をターゲットにしている場合、この方法を使用します:
function moneyform($number, $symbol = true) {
return str_replace(".00", "", money_format(($symbol? '%.2n' : "%!n"), $number));
}
moneyform(1300999);
-->$1,300,999
moneyform(2500.99);
-->$2,500.99
moneyform(2500.99, false);
-->2,500.99
私はこのようなことをしたと非難されてきました:
floatval($foo) == intval($foo) ? number_format($foo) : number_format($foo,2);
Warren.Sの回答は私を助けてくれました。私はnumber_format関数を必要としなかったので、私はこれをしました
$value=$value-0;
しかし、OPの場合、カンマを削除するにはnumber_formatが必要です。だからこれは彼のために働くだろう
$value=number_format ($sql_result["col_number"], 2, ".", "")-0;