4

mySQL dbテーブルにdecimal(15,4)タイプのフィールドがあります

私はこれまでこれを経験したことがありませんが、値が0.0000の場合、PHPのifステートメントがtrueを返します。

健全性チェックとして、私も次のことを行いました。

if(0.0000) echo "Hello World";

そして確かに、HelloWorldはエコーアウトしました。一体何が起こっているのですか?誰かアイデアがありますか?

4

4 に答える 4

4

DB から出力される float 値の場合、数値ではなく文字列として扱われます。これを試すことができます:

if(floatval($value) > 0) { ... }

DB$valueからの値が含まれています。

于 2012-05-26T12:29:10.293 に答える
2

"0.0000"問題は、db から文字列を取得したのに取得していないことだと思います0.0000

次を使用して再試行します。

if ((int)$your_value) echo "Hello World";
于 2012-05-26T12:01:31.147 に答える
1

この質問が開かれてから長い時間が経っていることは知っていますが、他の誰かを助けるかもしれないと思いました.

float は、実際には の近似値ですReal NumberReal numbersすべてが float で表現できるわけではないことがわかります。これが、予期しない結果が得られる理由である可能性があります。http://php.net/manual/en/language.types.float.phpを読んでおく必要があります 。

ただし、より高い精度が必要な場合は、BC Math ライブラリのhttp://php.net/manual/en/ref.bc.phpを使用して調べる必要があります。

于 2015-08-20T00:27:06.657 に答える
1

PHP バージョン (5.3.3) では、この動作はありません。

チェックを行う前に数値をboolにキャストすることをお勧めします: if ((bool) $float)

于 2012-05-26T12:00:11.453 に答える