プログラマ ずんべ の日記

zunbe

プログラマ ずんべ の日記
プログラマ ずんべ の日記

探し物は見つかりましたか? サイト内検索を試してください。

オライリー・ジャパンがRSSを公開していた。 オライリー・ジャパンがRSSを公開していた。 (その20) インストールの流儀 (その20) インストールの流儀

2005/10/04

【若いモンの発想はわからん】(その19) 四捨五入

数値を四捨五入するプログラムを作らせた。
出てきたコードは、これだ。

-----
# パラメータを設定
$bval = 1.4567;
$mag = 100.0;

# 四捨五入を実行。
$bval *= $mag;
$nval = int($bval);
$pval = $bval - $nval;
$pval *= 10;
if ($pval >= 5)
{
  $nval += 1;
}
$bval = $nval / $mag;

# 結果を表示
print "${bval}\n";
-----

残難ながら、ずんべの脳ミソではこのコードを理解する事ができない。
それ以前に、このコードが正しいかどうか検証する気になれない。
どうしてこんな複雑なコードが必要なのだろうか。

四捨五入の基本となるコードはこれだけである。
これに、丸める桁の処理と、負の値の対応を付加すれば、四捨五入のコードはできあがる。

-----
$bval = int($bval + 0.5);
-----

おそらく、社員が作成したコードは、検索エンジンで探して、どこかのサイトから拾ってきたコードであろうが、プログラマたるもの四捨五入程度のコードは調べるまでもなく頭の中に入っているべきだ。
どう考えても、こんな複雑なコードは必要ない。



このエピソードはいかがでしたか?

投稿者 zunbe : 2005/10/04 01:40:02


トラックバック 〔http://blog.zunbe.com/mt/mt-tb.cgi/26〕

コメント

プログラムにおいてこういうのは数学の公式と同じですね。(^^;
他にはソートアルゴリズムとかも。

投稿者 NOBU! : 2005/10/04 10:10:48

そうそう、プログラマたるもの、この程度のものはそらで書けないといけません。

それに、プログラムをどこから拾って来たにしろ、それをよき観察して、検証して、理解してから使うべきだ。
たとえば、このコードの肝の部分。

-----
$nval = int($bval);
$pval = $bval - $nval;
$pval *= 10;
if ($pval >= 5)
{
  $nval += 1;
}
-----

小数点以下を取り出し、10倍し、「5以上か?」と確認している。

まず、10倍という処理がムダである事は明白である。
当然、こうなる

-----
$nval = int($bval);
$pval = $bval - $nval;
if ($pval >= 0.5)
{
  $nval += 1;
}
-----

変数 $pval は、0.5 以上か未満かを調べたいだけのワーク変数であるので、この変数への代入もムダ。

-----
$nval = int($bval);
if (($bval - $nval) >= 0.5)
{
  $nval += 1;
}
-----

この程度まで最適化して使うんだったら、まだ許せる。
しかし、ネットで拾ってきたものを、何の検証もせず、何の確認もせず、何の最適化もせず、何ら内容を理解せずに使おうとする、その考え方が、どうにもずんべは気にいらんのですよ。

投稿者 ずんべ : 2005/10/04 10:36:43


コメントしてください






保存しますか?


スパム対策:
この入力フィールドに「128」と入力してください。


プログラマ ずんべ の日記:ずばヒット アマゾン