アフィリエイト広告を利用しています
G-QVESCNWRVH

2024年06月12日

切り上げってなんだよー

●端数処理に付いて

切り捨ては・・・目的とする桁の一つ右の桁以下を切り捨てる
四捨五入は・・・目的とする桁の一つ右の桁が4以下(つまり0〜4)なら切り捨てる
5以上(つまり5〜9)なら切り上げる
切り上げは・・・目的とする桁の一つ右以降の桁が全て0でなければ切り上げる
って思ってた
●プロのソフトハウスのプロシージャで

でも、プロのソフトハウスに回収してもらったお客様のシステムを今私が担当
そこで変な動作をするアプリがあり、お客様から確認依頼

その中で使用されている計算用プロシージャの中の端数処理サブルーチン
そのロジックが・・・・最初に上げた定義と異なる・・・

切り上げだけ・・・目的とする桁の一つ右以降の桁が1以上(つまり1〜9)までなら切り上げる
となっていました。
●どういうことかと言うと

例えば、小数点第一位を端数として整数化する場合
10.00 ☛ 10
10.01 ☛ 10
10.09 ☛ 10
10.10 ☛ 11  ここでやっと切り上げ処理がなされた

いや、10.01も10.09も切り上げて11にすべきだろ〜
そう思って、お客様に確認すると・・・やっぱりこの変な定義のまま
●とりあえず、プロに確認

という事で、お客様に聞いた事は伏せて(笑)
ソフトハウスの担当者にメールを送った
昨日、退勤する時にはまだ返信が無かった

今日、来てるかなー(ワクワク)




人気ブログランキング
人気ブログランキング




昨日一日悩んだこと 2÷3バツ13は2ではないと言う事(笑)

●2わる3は

これを計算できない人はいないでしょう?
いくらですか?
●それに3をかけると?

これも計算できない人はいないでしょう?
いくらですか?

そうです 2ですよね
●でも、そうではない

いや・・・・でも実は・・・・
Excelで計算してみましょう
20240612-01.jpg
あれ! うまいことごまかしていますね(笑)

それでは、小数点桁数をめちゃくちゃ増やしてみましょう
20240612-02.jpg
あれっ? =2/3 の結果が途中から変に・・・

そりゃそうです! 無限小数を有限桁数のコンピューターの変数に正確に納めることは不可能です
でも、その次の、 =2/3*3 は正しく 2 となっていますね
さすが Microsoft の開発者にこにこ
●計算誤差

計算誤差はコンピューターでの計算においては必ず発生するものです
しかし、計算結果には出来るだけ誤差を生じさせない様にします
それがシステムを作成する者の務めだと私は思っています

でも、今担当しているお客様のシステムは・・・・
作った人が多分そこまで考えていなかったか、ご存じなかったか
端数誤差がもりもり表れています

なので、2を3で割ったら、 0.67
それに3を掛けたら、2.01

元の数字より大きくなっているから入力エラー

これを回避する現運用は、
2を2.01に入力し直して
エラーを回避・・・・おかしいでしょ(笑)

まぁ、運用している方たちはこういうもんだと思ってずっと運用してきているんでしょうね
なんとかしてあげたいと思って、昨日、悩みました_| ̄|○


人気ブログランキング
人気ブログランキング




ファン
検索
<< 2024年06月 >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
最新記事
写真ギャラリー
最新コメント
タグクラウド
カテゴリーアーカイブ
プロフィール
Y.Taki@AS400さんの画像
Y.Taki@AS400
IBM AS/400で稼働するシステムの開発・追加を担当して30年以上になります。使えば使うほどこの AS/400 が好きになりました。 こんなSEがいろいろな視点から様々な業務などについて語ります。
プロフィール