- - PR -
490/4.9=99.99999
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-21 18:47
違います。
、特徴を理解しないまま使うからです。 なお、decimal だからといって、丸め誤差が発生しないわけではありません。
| ||||||||||||
|
投稿日時: 2005-11-21 21:21
その手段がどのような特性を持っているのか、 理解しないまま振り回したところで、何の解決にもならんのですよ。 お客さんがかわいそうだと思いませんか。 | ||||||||||||
|
投稿日時: 2005-11-21 21:36
そもそも、整数以外の数値には誤差はつきものですよね。
じゃんぬさんが、よい例を出されています。
この場合
にどういう意味があるのかを考えないことには、無意味だと思うのですよね。 もひとつ蛇足ですが '99.9999... というのは数値をどのように十進表記するかの実装に依存するだけの話です。 使い方次第なわけで、人為的な四捨五入や切り捨て、切り上げが計算結果に関係なければ Decimalの出番はそれほどないように思います。 99.9999... = 100.0000 だったりするわけですら。 法的な制度以外でDecimalを使わねばならないケースってはたしてあるものでしょうか? [ メッセージ編集済み 編集者: ジブ 編集日時 2005-11-21 21:38 ] | ||||||||||||
|
投稿日時: 2005-11-21 21:52
よく読んでいなかったです。
10進数(小数)にはDecimalを、自然数にはSingleやDoubleを って単純な話だったのね。。。。。。 [ メッセージ編集済み 編集者: ジブ 編集日時 2005-11-21 21:53 ] | ||||||||||||
|
投稿日時: 2005-11-21 22:06
つっこみ失礼。
「自然数」って何かわかってらっしゃいます? もしかして「実数」と書きたかったんですか? その場合でも、SingleだろうがDoubleだろうが、実数を完璧に表現することは不可能ですが。 [追記] と書きましたが、Decimalと、SingleやDoubuleは、いずれも、 仕様上の制限の下で実数を表現するための方法ですね。 [/追記] で、その辺を理解しようともせずに 「演算を人間の振る舞いのままにトレースするという簡単なことが、 なぜすぱっとできないのか」とだだをこねている、と。
世の中、便利になるのは悪いことじゃないですよ。 でも、技術者が技術に甘えては、話にならんでしょうが。 [ メッセージ編集済み 編集者: さいくろう 編集日時 2005-11-21 22:22 ] | ||||||||||||
|
投稿日時: 2005-11-21 22:14
さて、実数を完璧に表現する?ことは十進数二進数にかかわらず不可能だったりします。 測定誤差などありますから。 制度的に意味のある小数以外で丸め誤差が重要となるケースは世間にはあまり転がっていない気がしますが? 具体的にDecimalでなければならない実例を挙げていただければ議論も進みましょう。 | ||||||||||||
|
投稿日時: 2005-11-21 22:30
補足しておきましょう。 1/3は実数ですが三進数かその倍数進数以外では完全に表現(小数表記)ができません。 二進数での小数表記はたまたま十進数の小数で完全に表現できたりします。 なぜたまたま十進数の小数で完全に表現できたりするのか。。。。。 そういう部分も考察して、Decimalの利用価値を語っていただければ幸いです。 | ||||||||||||
|
投稿日時: 2005-11-21 22:57
> 皆さんわざとですか?
わざとだろうね。 先に言っておくが 浮動小数点の仕組みを知ることは悪いことだとは 俺は言っていない。 俺は手計算で4.9を浮動小数点に変換したところで 解決までの道のりが急がば回れになるとは思えんけど 教えないのがIT技術者のやさしさなんだよ。 googleで 浮動小数点 丸め誤差 情報落ち 桁落ち 打ち切り誤差 有効桁数 とか調べれば結構情報あるので困らないし十分理解も出来る。 俺は手計算でIEEE754変換、逆変換できないし、する気にもならん。 質問者には適当に面倒なことさせて回答したことにして 回答者同士で間違い指摘するのが楽しい。 [ メッセージ編集済み 編集者: 未記入 編集日時 2005-11-21 22:59 ] |