2022/05/06 Fri
活動
世界共通と思っていたこと
皆さんこんにちは!
今回は活動中に驚いたことを1つ紹介します。
これは私が配属されて2か月ぐらい経ったころの話ですが、あるとき同僚からシステムの不具合についての相談を受けました。
ちょっと厄介な不具合が発生していて同僚たちが対応に困ってしまい、どうにかならないかと相談を受けたものです。
不具合の内容としては、数値の端数処理で想定通りの結果が得られないというものです。
プログラムの標準計算機能が正しく機能していなくて、色々調べたところ数値をコンピューターで扱える2進数にする際にどうしても表現しきれずに無限小数になってしまうことが原因でした。
この不具合自体はよくあることなのですぐに対応したのですが、同僚に結果を確認してもらったところまだ一部の値がおかしいと言っていました。
私が検証した限りではすべてのパターンで正しい値が得られていたので、疑問に思い詳しく聞いてみると、四捨五入した時の値が同僚が期待する値と違うとのことでした。
驚いたのはここからで、今まで世界共通と考えていた四捨五入のやり方が少し異なっていて、今まで考えもしなかった方法を提示されたことです。
例えば 1.2345 という数値を四捨五入して小数部を2桁に丸めたい場合、小数第3位の4を四捨五入して1.23にするというのが私が今まで常識だと思っていた考え方です。
これに対し同僚から提示された方法は、小数部の最後の桁から順に四捨五入していき、それを小数部が2桁になるまで繰り返すというものでした。
具体的には、まず1.2345の最後の桁を四捨五入して1.235、さらにもう一度最後の桁を四捨五入して1.24にするというものです。
些細な違いといえばそれまでですが、私は今までITエンジニアとして働き、この手の計算も多数実施してきましたので、この考え方には本当にびっくりして、そんな考え方があるのかと目からうろこでした。
数学的な計算において、計算方法や計算の優先順位などは世界共通で1つしか無いと考えがちですが、世界共通と考えていたものが実は世界共通では無い場合もあると思い知らされた瞬間でした。
ちなみに四捨五入の方法は私のやり方が一般的ではないかと思いますし、プログラムの標準計算機能ではこの方法で四捨五入されるものしか見たことがありません。それを同僚に説明したうえで再度対応方法を確認したところ、同僚が提示した方法で四捨五入してほしいとのことでしたので、この方法を使った四捨五入機能をその場で私が作り込み、不具合は無事に解決しました。
写真は上から順に、クエンセル・ポダンの裏側ゲート、時計塔広場、ゾンの近くにある公園(秋に撮影)。
では、また次回!
SHARE