電子書籍の厳選無料作品が豊富!

C言語では、
>1.0 + ε > 1.0 となる最小の値ε
>#define FLT_EPSILON 1.19209290E-07F
>#define DBL_EPSILON 2.2204460492503131E-16
>#define LDBL_EPSILON 1.084202172485504434e-019L
のような形で定義されているそうですが、
PHPにおいてはそのような値は定義されているのでしょうか?
そもそも小数点以下を評価(比べる)する際に
C言語などと違う点はどこらへんでしょうか?

A 回答 (1件)

cで使われるごくごく小さい数は「機械イプシロン」と言うらしいですね。


// 知らなかった

一晩待って誰も突っ込まない、「機械イプシロン PHP」で検索・ぐぐってもそれらしい記事がないところをみると
該当する機能はないのではないかと思います。
ただphp自身がcで記述されているので、独自拡張すれば使えないこともないのではと思います。
手間はすごく掛かりますが・・・

むしろ、php内でそういう機能を実装するのもアリかもしれませんね。

この回答への補足

URL忘れました・・・
ここです
http://jp.php.net/manual/ja/language.types.float …

補足日時:2007/12/12 15:41
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
マニュアルにサンプルのようなものがありました。
自分で定義してるみたいですね。
見た感想としてはC言語と同じような感じだろうか


define('EPSILON', 1.0e-8);

function real_cmp($r1, $r2)
{
$diff = $r1 - $r2;

if( abs($diff) < EPSILON )
return 0;
else
return $diff < 0 ? -1 : 1;
}

お礼日時:2007/12/12 15:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!