アカウント名:
パスワード:
浮動小数点の取り扱いの違いを意識しなくてすむ
うそつけ。
# このあたりでいいかな
BigDecimalのことを言っている人は1.4.xがまず「ちゃんと」動いていることを検証したのかな? 私が関係したJavaベースで開発された大規模システム(とは言っても基幹システムじゃないです)が1年ほど前にようやく1.1.8から1.3.1に移行できたぐらいなんですが. 「ちゃんと」動いているならそれは非常に有益な情報なんですが.
# HotSpot使用で性能確保のために追加導入したサーバがいらなくなっちゃったのは客も承知なのでID
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
別にCOBOLが (スコア:4, すばらしい洞察)
JAVAにすれば絶対的に保守性がよくなるとか、安全だとかって確信(自信?)
あるの?
悪いのはシステム/開発管理をいいかげんにしてきた事が悪いわけで、言語
Re:別にCOBOLが (スコア:1, 参考になる)
・浮動小数点の取り扱いの違いを意識しなくて済む
・モニタなどの言語レベルでの排他制御などがついている
というような利点があります。僕は面倒なセマフォなんぞに
戻りたくないです。それに、
・COBOL人員はコスト高
になってい
Re:別にCOBOLが (スコア:3, すばらしい洞察)
うそつけ。
Re:別にCOBOLが (スコア:0)
もしかして事務処理のときって浮動小数点計算を信頼せず、
独自に処理したりするんだよ。ということかな?
Re:別にCOBOLが (スコア:1)
事務処理に浮動小数点計算って、金勘定に浮動小数点計算を使うって話ですか?
# まさか、ね
Re:別にCOBOLが (スコア:1)
# このあたりでいいかな
BigDecimalのことを言っている人は1.4.xがまず「ちゃんと」動いていることを検証したのかな? 私が関係したJavaベースで開発された大規模システム(とは言っても基幹システムじゃないです)が1年ほど前にようやく1.1.8から1.3.1に移行できたぐらいなんですが. 「ちゃんと」動いているならそれは非常に有益な情報なんですが.
# HotSpot使用で性能確保のために追加導入したサーバがいらなくなっちゃったのは客も承知なのでID
Re:別にCOBOLが (スコア:0)
だって小数点の位置を変えて演算する方式ですし。
実装がIEEE754なのか、BCD文字列などなど、色々違いはあるでしょうが。
もしかして、固定小数点演算してる?
Re:別にCOBOLが (スコア:0)
# 556650のACと組むのだけは絶対にいやだ。
Re:別にCOBOLが (スコア:0)
Re:別にCOBOLが (スコア:1)
まあそうなんですが。しかし問題なのは、この辺の事を認識していないのが厨房に限定されていない事でしょうね。仕事でコードを書く人にも結構います。大昔にAccessBASICで書かれた給与システムの火消しをやった時に、浮動小数点型を全部Currency型?に変えて、やっと微妙な狂いを消す事が出来ました。最近も金額計算を浮動小数点でやろうとしたヤツに出会いましたし。
IEEE754やそれ類似(ってもう無いか)の浮動小数点を金勘定に用いる場合の問題は、乗除算では有効桁数が足りない事(倍精度では十進8桁同士の掛け算で既にあぶない)と、仮数部が二進数の小数である事、ですね。5%、0.05なんてのは二進数的には循環だか無限の小数ですから、演算結果に誤差が生じますね。誤差を累積するようなコードならば、そのうち円の単位とかで狂いが出る訳で。
Re:別にCOBOLが (スコア:1)
Re:別にCOBOLが (スコア:1)
Re:別にCOBOLが (スコア:0)
> 独自に処理したりするんだよ。ということかな?
うーん、そんなことすら知らないのに、実務面から見た Java と COBOL の優劣を語るのはどうかと思う。
Re:別にCOBOLが (スコア:0)
のは定石なのですね。勉強になりました。かのKnuthがTeXを設計
するときに、計算機ごとの浮動小数点の振る舞いが異なるのを見越して、整数演算だけで設計した話を思い出してしまいました。
ところで、IEEEにしたがっていることが保証されると、計算機ε
が明らかなので、演算前に値がある範囲を取っていることが判明
すれば、浮動小数点演算を利用することはできないでないと思う
のですがどうなんでしょう?
例えば (int)(整数×5[
Re:別にCOBOLが (スコア:1)
> 演算前に値がある範囲を取っていることが判明
> すれば、浮動小数点演算を利用することはでき
> ないでないと思うのですがどうなんでしょう?
確かにそういう理論がありますね。
「区間演算」でしたっけ。
ただ、勘定系に適した方法が確立されてる以上、あえて
それを使う必要もなさそうですね。
Re:別にCOBOLが (スコア:0)
人間がプログラムを作成する以上、バグは何処にでも入り込む。
仕様では一定の範囲内のはずが、実際のコーディングではそうなっていない可能性もある。
そういったとき、浮動小数点計算と整数演算ではどちらが「より安全か」という点も考慮したほうがよい。
桁数以上の数値入れたら (スコア:1)
>あらかじめ用意した桁数以上の数値を代入しようとしたときって、
>エラーで ABEND したりしなかったっけ?
実際は処理系に依存するんでしょうが、通常は小数点のところを
中心に転記されて、余った整数部の上位部分と小数部の下位部分
は捨てられてそのまま処理実行。
例:
01 HOGE PIC 9(4).
で
MOVE 12345 TO HOGE.
をやるとHOGEの中は 2345。
#そう言えば 01 HOGE PIC 9(32). なんてコーディング
#やって、「なんでコンパイルエラーになるんだろう?」など
#と言っていたやつがいたな