累乗プログラム
研修に使うプログラムで、「四捨五入をする」という処理が必要になったため、関数を作りました。
アルゴリズムは「四捨五入対象桁に5を足して、切り捨てる」というもの。四捨五入対象桁以下の値が5未満(つまりその桁が4以下)のときは、そのまま切り捨てられ、5以上ならば繰り上がりが生じるので、切り捨てを行うことによって四捨五入が完成するという。*1
今回のプログラムでは四捨五入対象桁は決まっているのですが、汎用性を高めるために四捨五入対象桁をshort型(整数)で選べるようにしました。そのためには、10^nを計算しなければなりません。しかし、累乗というのはC言語では演算として存在しないので、作ることにしました。
二進累乗アルゴリズムを使うのは学部時代PKCSの研究のとき以来です。なつかしいな。
累乗のほうは標準ライブラリ(math.h)にあったんだorz orz orz orz orz
でも、あれは指数もfloatで指定するようになっていますけど、どんなアルゴリズム使っているんだろ(@_@)
*1:厳密には対象桁以下をそのまま残し、表示のときにそのまま切り捨てる。