#68 Article 5693 Posted at 1994/12/12 09:06:28 by C3KO (MAP5140) [NEWSPAPER]

Subject: Re:*7 パソコン報道 (Re: 危うしペンタ) /5678 ........ /5527 /5522

スレッド関係
元スレッド #68/5522 — 「危うしペンタ」 1994/11/29 20:10:54 · 夢中ゆわ · MAP2717
今朝の朝日を見ました。 とりあえずそっち方面のNETでは有名な話だそうですが。 インテルも大変ですね~ P6,P7の線表も影響有るのかしら? インターネットな友達がガースナー氏のお詫びのニュースを見せてくれました(^^;) でも、交換しなくていいんでしょうか? アブないなぁ… 最近9821Xシリーズを街で見掛けないのはそのせいかな? デルの新発表も486マシンだけでしたね。 さて、これで一気に現存ペンタが値崩れして… 現存ペンタマシンも…
     参照 #68/5527 — 「Re: 危うしペンタ /5522」 1994/11/29 23:09:48 · RYUKUN · MAP2149
確かめ方の一例です(笑) Win 3.1のアクセサリの電卓の関数電卓機能を使って 1/824633702449*824633702449を計算します 答えは1のはずですが バグありペンタだと0.9999999962747となります 某NETからの情報でした RYUKUNでした
         返信元 #68/5678 — 「Re:*6 パソコン報道 (Re: 危うしペンタ) /5613 ....... /5527 /5522」 1994/12/10 22:58:03 · アオタカ · MAP4885
>> EPSONマシン NEC-DOS、MS VISUAL BASIC なんですけど >>D 10.8999996185303 10.8 >PC-9821As NEC-DOS5 MS-Win MS-VBでやってみたら、こんなん出ました~ > D 10.9 10.9 おお?!まさかNECの計算ルーチンはAI搭載か?(笑) これなら丸め誤差も大丈夫‥‥ってBCDの方が役に立ちそうだなぁ じゃなくて内部の計算方法がこっそり違っているだけでは?…
             現在 #68/5693 — 「Re:*7 パソコン報道 (Re: 危うしペンタ) /5678 ........ /5527 /5522」 1994/12/12 09:06:28 · C3KO · MAP5140
                 返信先 #68/5706 — 「Re:*8 パソコン報道 (Re: 危うしペンタ) /5693 ........ /5527 /5522」 1994/12/13 20:55:32 · 夢中ゆわ · MAP2717
>もし、倍精度型に正しい結果を求めるのなら、代入する値も倍精度でなければ問題 そういえば、そういう話を聞いた事があります(^^;) すぅ~かり忘れてたな~ N-BASIC系は基本的に単精度ですね。M-BASIC系は知りません。 カシオのパソコン(FP)は、精度重視で結構感動した覚えがあります。 あの頃は、工業系の電卓の方が精度が良かったんですよね~ #MAP2717 夢中ゆわ
                 返信先 #68/5713 — 「Re:*8 パソコン報道 (Re: 危うしペンタ) /5693 ........ /5527 /5522」 1994/12/14 02:42:48 · MSP-Iris · MAP4370
というかですね、このあたしの書き込みは、3人分の対比として見て欲しい です。つまり、 TMVさん 夢中さん あたし 単精度 10.9 |10.8 10.9|10.8 10.9 |10.9 倍精度 10.8999996185303|10.8 10.9|10.9 10.89999961853027|10.8 こういう結果が出て来たわけです。 そもそもの話は単精度と単精度との計算で単精度の結果があわない...と いうことでしたよね? そこの点…
スレッド全体を見やすく表示
え~、BASIC上でのまるめ誤差の言い出しっぺのC3KOですが

>10 DEFSNG S     '単精度
>20 DEFDBL D     '倍精度
>30 DEFINT I     '整数型
>40 S=10.9:D=10.9:I=10.9
>50 PRINT "S",S,INT(S*10)/10
>60 PRINT "D",D,INT(D*10)/10
>70 PRINT "I",I,INT(I*10)/10
>
>S      10.9    10.9
>D       10.89999961853027       10.8
>I       11      11                           <-そりゃそうだわなぁ(笑)

との件ですが (^_^)ゴカイサレタミタイナノデ

 もし、倍精度型に正しい結果を求めるのなら、代入する値も倍精度でなければ問題
です。つまり、10.9と単に記すと(BASICにもよりけりですが)普通単精度と見な
されます。単精度の 10.9 は、有効桁数7桁までみるかぎり 10.9 であればいいので
(というか、そうするしかない)、有効桁数16桁の倍精度では変な値に
なってしまうのです。実際に四捨五入してみてください。整数部ですでに2桁です。
また単精度の値を倍精度変数に代入するには、本当は CDBL という関数を使って
代入します。
 誤差を防ぐ為には上のプログラムでは
	40 S=10.9:D=10.9#:I=10.9
又は
	40 S=10.9:D=CDBL(10.9):I=10.9
とすればいいのです。(# は倍精度実数の実値をあらわす記号)

この問題は、EPSONだからとか、NECだからとかではありません。某M社がかつて
販売したBASICの仕様(のはず)です。
こまるのは、同じ精度の値なのに、結果が異なる場合です。コレハコマルゾ(^_^)
ちなみに、Cでは、double の型のもう一つ上、long double があります。とくに丸め
処理が気になるような部分でなければ、long double を用いると結構誤差がでにくく
なります。
Cでは警告とかばんばん出てくる問題が、BASICインタプリタ・コンパイラでは普通に動く
「ふり」をするのが恐いです。もっともCでも奇々怪々なエラーは発生しますが。

なんか、Pentium の話とは時空(時間と空間)を超えた話ですね。(^_^;)


		私は数百万種類の言語が...(うそ)	C3KO