3 つの乱数が整数に計算される場合 (およびその場合のみ) にアクションを実行する単純な PHP プログラムを作成しています。乱数はすべて整数で、rand() 関数で作成されます。計算の具体的な詳細には立ち入らずに、(私の問題に関して) 重要なことは、平方根の取得が含まれていることです。あまり経験のない PHP コーダーなので、知っている唯一の平方根関数は sqrt() です。問題は、入力が整数で出力が正確な場合でも、sqrt() が float を返すことです。出力を整数に変換することを簡単に考えました (intval() のようなものを使用しますが、すべての出力が整数に変換され、テストが役に立たなくなるため、うまくいきません!これを行う方法に関するアイデアはありますか?ありがとう、
1733 次
5 に答える
4
それが完全な正方形かどうかを判断したいだけなら、
intval(result) * intval(result) == originalValue
これらの関数のphpバージョンはわかりませんが、おそらく知っていますか? :)
于 2011-03-01T23:52:12.040 に答える
3
これは、浮動小数点を扱うときによくある問題です。取得した float が整数に非常に近いことを確認してください。通常、これは小数部が非常に小さいことを確認することによって行われます。
if (abs(round(f)-f))<delta)
# do stuff
これは、 0.0001delta
などの小さな定数です。どのくらい小さくする必要があるかは、結果が整数にどれだけ近いと予想されるかによって異なります。それはあなたの計算に依存します。
于 2011-03-01T23:50:43.420 に答える
0
$result % 1e9
$result の整数部分を返します (負の値の場合は、結果の上限を見つけます)。しかし、これはハックなので、楽しみのためにのみ使用してください。
于 2016-07-31T03:45:44.623 に答える
0
この知識は別の言語でのプログラミングからのものですが、式に 1 を掛けようとしたことがありますか。たとえば、次のような整数を取得する必要がある場合
a = 3.45 * 8;
これを行う
a = 3.45 * 8 * 1;
于 2016-07-31T03:58:41.637 に答える
0
の行に沿った何かif($result % 1.0 == 0)
が機能する可能性がありますが、現在それをテストする能力がありません。
于 2011-03-01T23:52:15.190 に答える