web-dev-qa-db-ja.com

PHP number:必要な場合にのみ表示される小数点

数値を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
?>
56
vitto

私は実際にあなたの回避策は他と同じくらい良いと思います。それはシンプルで明確であり、ここでパフォーマンスについて話すことは本当に意味がありません。

15
Emil H

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
27
xDiff

エミールが言うように、あなたのものは良いです。ただし、_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
?>
_
8
Halil Özgür

私は記事を追加します PHPの小数から無駄なゼロ桁を削除する 必要に応じて小数を失うことなく値をきれいにする良い方法として。

7
vitto

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)
5
Dan Leveille

実際、私はこの種のことを探して検索を行った人のためにこれを行うために考えることができる最もきれいな方法はこれを行うことだと思います:

( number_format ($sql_result["col_number"], 2) * 100 ) / 100;
1
Tomas

米国の通貨をターゲットにしている場合、この方法を使用します:

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
1
Kevin J

私はこのようなことをしたと非難されてきました:

 floatval($foo) == intval($foo) ? number_format($foo) : number_format($foo,2);
0
Danial

Warren.Sの回答は私を助けてくれました。私はnumber_format関数を必要としなかったので、私はこれをしました

$value=$value-0;

しかし、OPの場合、カンマを削除するにはnumber_formatが必要です。だからこれは彼のために働くだろう

$value=number_format ($sql_result["col_number"], 2, ".", "")-0;
0
Sakushee