MySQL PHPの質問です。


ido[] keido[]
という2つの配列があります。緯度経度情報です。

また、固定の数字が2つあります。
36と135とします。

以下の計算式の結果を新しい配列kyori[]に入れたいです。
(36-ido[])^ + (135-keido[])^

できれば上の計算式の結果を平方根?して入れたいです。つまり結果が9なら3、16なら4という具合です。

説明が下手ですみませんが、よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/03/09 04:04:55
  • 終了:2007/03/10 19:31:10

回答(3件)

id:ctrl-v No.1

ctrl-v回答回数289ベストアンサー獲得回数152007/03/09 04:24:56

ポイント17pt

pow関数を使います。

number pow ( number base, number exp )

base の exp 乗を 返します。可能な場合、この関数は、integer 型の値を 返しま。


kyori[] = pow(36-ido[0],2)+pow(135-keido[0],2);

id:tokyosmash

ありがとうございます。

2007/03/10 19:29:35
id:nandedarou No.2

nandedarou回答回数230ベストアンサー獲得回数342007/03/09 07:14:04

ポイント31pt
//配列$idoと$keidoの要素数やキーが同じ場合の例です。
forceach( $ido as $key => $value){
  // (36-ido[])^ + (135-keido[])^
  $heihou = pow(36-ido[$key],2) + pow(135-keido[$key],2);
  // 平方根
  $kyori[$key] = sqrt( $heihou );
}

http://au.php.net/manual/ja/function.sqrt.php


※先ほどの質問の件

さらに改良版の回答を書き込みましたので、できたら見て下さいね!

id:tokyosmash

度々ありがとうございます!

一連の質問の最後にあたるものも先ほどUPしました。

もしよろしければお願いします。

2007/03/10 19:29:26
id:kidd-number5 No.3

kidd-number5回答回数117ベストアンサー獲得回数152007/03/09 13:51:48

ポイント32pt

平方根ならsqrt

http://jp2.php.net/sqrt

$kyori = array();

for($i=0; $i < count($ido); $i++){
    $kyori[] = sqrt( pow(36 - ido[$i], 2) + pow(135 - keido[$i],2) );
}

しかしpowはintegerを返すので

(36-ido[$i]) * (36-ido[$i])としたほうが精度的には良いでしょう。

bcpowが使えればそれでもいいですが。

http://jp2.php.net/manual/ja/function.bcpow.php

id:tokyosmash

小数点題7位くらいまで取り扱いますのでintegerだと精度がかなり落ちてしまいますね。

bcpowを使わせていただきました。

アドバイスありがとうございます!

2007/03/10 19:30:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません