人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL PHPの質問です。

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

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

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

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

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

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:IDO MySQL PHP 平方根 数字
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ctrl-v
●17ポイント

pow関数を使います。

number pow ( number base, number exp )

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


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

◎質問者からの返答

ありがとうございます。


2 ● nandedarou
●31ポイント
//配列$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


※先ほどの質問の件

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

◎質問者からの返答

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

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

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


3 ● kidd-number5
●32ポイント

平方根なら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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ