先日アップしたM-Lineの新バージョンですが、使ってみたところヘンな動作をします(汗)
技術的な話しになりますが、プログラムの中では数学のエックス・ワイ・アールなどのような「変数」を使います。 その変数の中に数値を記憶させて計算させていくんですね。
学校→目的地→学校の距離を算定する場合は、それぞれ学校→目的地に合致したデータベースを調べ、変数に記憶させていきます。
で、この変数ですが、必ず「型」を宣言する約束があります。
たとえば「A」とか「仙台」といった文字を記憶させるなら「文字型」
桁数の少ない数値を記憶させるなら「整数型」
桁数の多い場合は「長整数型」
小数点がある数値なら「単精度小数点型」「倍精度小数点型」
日付や時間を記憶するなら「日付型」
数値なら結構自由度のある「通貨型」(ややメモリを余計に食う弱点あり)
旅行距離は小数点1桁までなので迷わず「単精度小数点型」を使いました。
ところがおかしな現象が出ました。
実際の路程距離を小数点以下9桁まで返してきたのです。
ありえません。 なぜならデータベースには小数点2桁以下の数値がないのですから。
おっかしいなぁ??? と調べているうちに、プログラム内部で不思議なことが起きているのを発見。
データベースでは「25.3」kmと出ているのに、それを記憶した変数がなんと「25.299999999」なんていうことが発生してみたり。 なんで?
そこで型を「単精度小数点型」から「倍精度小数点型」に変更。 ←こっちの方が精度高いっていうし。
これでどうだぁっ!とやってみたら、今度は「25.29999999999999999…」
そいつもたまーにではなく、毎回小数点以下を激しく出してきました。(10.8→10.7999999…とか)
データベースの数値とどうやっても一致しないのです(滝汗)
どうしよう? と1分ほど考え、今度は「通貨型」に変更してみました。
結果は良好(^^)
あんまり使わなかった「通貨型」でしたが、案外いいものだと再認識。 つーか、なんで「小数点型」を使うと食い違うんだ?工エエェェ(´д`)ェェエエ工
なんのための小数点のための型なんだ?とちょっと怒ってみました ヽ(#`д´)ノ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
というわけで、アップデートした方々申し訳ないです。
再度アップデートして下さいませ うう、ごめんなさい。 ▄█▀█●
お手数かけますがお願いいたします。 先日のものだと数値が1単位で動く可能性があります。
あ、あと帳票も少しだけいじってます。 迷わずアップデートして下さい。