計算機で使うほうが遥かにはやいのに、わざわざプログラミングして、答えを知ろうとする、ユゲタです。
とある処理(プログラミング)を書いていた時に、四捨五入の処理をしたんですが、その時はjavascriptだったので、
他のプログラム言語での書き方はどーするんだろうな・・・と思って、一括でブログに書きなぐってみました。
まあ、だいたいどの言語でもround命令がそれなんですけどね。
Javascriptで四捨五入
Math.round(1.23);
-> 1
Math.round(1.2345 * 100) / 100;
-> 1.23
Math.round(12345 / 100) * 100;
-> 12300
小数点の計算が苦手なjavascriptですが、できるだけ整数値で処理するようにしましょう。
PHPで四捨五入
round(1.23);
> 1
round(1.2345 , 2)
-> 1.23
round(123456 , -2)
-> 123400
正も負も桁強いてができるんですね。
あまり使う機会はなさそうだけど、知っていると便利に使う機会があるかも・・・
Rubyで四捨五入
1.3.round
-> 1
1.5.round
-> 2
1.2345.round(2)
-> 1.23
12345.round(-2)
-> 12300
こちらも正負桁指定があり便利ですね。
しかも少しだけシンプルな書き方で、さすがrubyですね。
Pythonで四捨五入
round(1.2345)
-> 1
round(1.2345, 2)
-> 1.23
round(12345, -2)
-> 12300
可もなく不可もなく、非常にシンプルこの上ないです。
rubyとまったく同じ書き方に、プログラミングにおける、シンプルの極みを見た気がしますね。
Go言語の四捨五入
fmt.Println(math.Round(1.2345))
-> 1
fmt.Println(math.Round(1.2345 * 100) / 100)
-> 1.23
fmt.Println(math.Round(12345 / 100) * 100)
-> 12300
どちらかというと、javascriptの構文に近い書き方をするんですね。
ライブラリ構成が手にとるようにわかる言語で、慣れると開発高速化する意味がよく分かります。
AWKで四捨五入
echo 1.234 | awk '{split($1, a, "."); print a[1];}'
> 1
echo 1.234 | awk '{num=$1;split(num * 100, a, "."); print a[1]/100;}'
> 1.23
echo 12345 | awk '{num=$1;split(num / 100, a, "."); print a[1]*100;}'
> 12300
めちゃくちゃ変則的に処理をしないといけないのが、このAWK言語。
他のサイトで見たところ、
echo 1.234 | awk '{printf("%d\n", $1 + 0.5)}'
こういう書き方だったんですが、これでは、四捨五入した値を変数に代入するとこができないので、プログラムで出力して終わりというスニペットでした。
おわり
いや〜、プログラム言語の傾向がわかるって、よりアルゴリズムに対する関心が深くなる感じがして、ワクワクしますね。
おそらく、「四捨五入 + (プログラム言語名)」で検索して、そこに書かれているコードをコピペして使う人が圧倒的多数だと思いますが、
そういう人の少しでも参考になれば幸いですね。
ちなみに、c言語の四捨五入は、下記のサイトを参照くだされ。
※環境も含めて書き込むのがめんどくさかったのは、言わないでおきます。
C言語で割り算結果を「切り捨て」「四捨五入」「切り上げ」する方法
0 件のコメント:
コメントを投稿