- - PR -
490/4.9=99.99999
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-19 10:11
時と場合によります。 | ||||||||||||
|
投稿日時: 2005-11-19 14:08
だから、どれくらいの精度が必要かによるんです。精度=桁数。 お金を扱うのなら、decimal を使います。これは10進数のまま、計算されます。先に COBOLer 以外と書いたのは、COBOL はお金を扱うために、10進数で計算するからです。 しかし、科学計算などになると、そのような精度は必要なくなってきます。地球と太陽の距離を求めるのに、1mm に、どんな意味がありますか?せいぜい、上位10桁ほどの値が保証されていれば、あとは誤差です。99.999 も、適当な桁で四捨五入すると、100.0 になりますよね。そういう使い方をします。 | ||||||||||||
|
投稿日時: 2005-11-19 14:43
何か思い込みしているみたい。
Decimalって人間が見る場合に限定するとそんなに完璧なものなのか。 | ||||||||||||
|
投稿日時: 2005-11-19 15:41
何か勘違いしていない?
工学計算では常に有効桁数を考慮します。表示するときには有効桁数2桁で四捨五入すれば戻ります。元に戻るか否かが問題なのでは無いんですよ。
上の計算結果は3です。
こちらの計算結果は0.9999999999999999999999999999です。 Decimalで計算したから元に戻ったり、人手で計算した結果と同じになるとは限りません。理由は分かりますよね。1/3は無限小数となって10進数ではあらわせないからです。でも2進数なら有限の小数として表現できます。 DecimalとDoubleの差は、10進数で数値を表現して演算を行うか、2進数で数値を表現して演算を行うかだけです。じゃ、なんで財務計算ではDecimalを使うのか。財務計算では表現されている数値は全て有効桁として扱う必要があり、10進数<->2進数の変換に伴って発生する誤差を許容できないからですよ。 | ||||||||||||
|
投稿日時: 2005-11-19 21:29
?10進で無限小数なら2進でも無限小数じゃないですか? 1/3進数とかならあらわせるとおもいますが整数進数じゃ無理じゃないですか? | ||||||||||||
|
投稿日時: 2005-11-19 22:13
<雑談>
3進数なら小数点以下第一位つまり0.1は、10進数の1/3と同じじゃないの。 | ||||||||||||
|
投稿日時: 2005-11-19 23:07
そうでつね^^; <いいわけ> 熱があってぼーっとしてますた。 </いいわけ> | ||||||||||||
|
投稿日時: 2005-11-19 23:15
10進数がこの世の真理で、2進数はオマケ、くらいに考えてるんじゃないかな。 2進数は2進数の振る舞いをするのであって、10進数の振る舞いを 完璧にトレースするのは、そりゃ無理でしょ。 >siopさん 他の方も指摘しているけど、4.9でも0.1でも、何でもいいから、 10進数表現の少数を、2進数表現に、自分で変換してごらんなさい。 [ メッセージ編集済み 編集者: さいくろう 編集日時 2005-11-19 23:20 ] |