パソコン困りごと掲示板
◇-PCと電卓での-byeb(2003/4/23-23:57)No.25422
 ┗Re:PCと電卓での-o2ka(2003/4/24-00:48)No.25425
  ┗Re:PCと電卓での-dobrze(2003/4/24-10:14)No.25432
   ┣どうなんだろ。-SARU(2003/4/24-11:25)No.25435
   ┃┣Re:どうなんだろ。-sumi(2003/4/24-21:27)No.25450
   ┃┗Re:どうなんだろ。-o2ka(2003/4/25-00:26)No.25468
   ┗Re:PCと電卓での-byeb(2003/4/25-21:16)No.25500

▲このページのトップに戻る
25422PCと電卓でのbyeb 2003/4/23-23:57

OS名:Linux
パソコン名:
ソフト名:
簡単な計算をプログラムで行って
電卓でも同じ計算をしたんですが コンマいくつかで誤差があるんですが
これはどうしてでしょうか
答えは どちらも同じなのですがこの誤差の理由は何なんでしょうか

▲このページのトップに戻る
25425Re:PCと電卓でのo2ka 2003/4/24-00:48
記事番号25422へのコメント
byebさんは No.25422「PCと電卓での」で書きました。
>OS名:Linux
>パソコン名:
>ソフト名:
>簡単な計算をプログラムで行って
>電卓でも同じ計算をしたんですが コンマいくつかで誤差があるんですが
>これはどうしてでしょうか
>答えは どちらも同じなのですがこの誤差の理由は何なんでしょうか

桁あふれ。

▲このページのトップに戻る
25432Re:PCと電卓でのdobrze 2003/4/24-10:14
記事番号25425へのコメント
o2kaさんは No.25425「Re:PCと電卓での」で書きました。
>byebさんは No.25422「PCと電卓での」で書きました。
>>OS名:Linux
>>パソコン名:
>>ソフト名:
>>簡単な計算をプログラムで行って
>>電卓でも同じ計算をしたんですが コンマいくつかで誤差があるんですが
>>これはどうしてでしょうか
>>答えは どちらも同じなのですがこの誤差の理由は何なんでしょうか
>
>桁あふれ。

o2kaさんの回答の通りですが、「小さな親切大きなお世話」と思いつつも
もちょっと説明。
byebさんが計算された時に誤差があるとの記述でしたが、どちらが正しいの
でしょうか?
2/3を計算すると、正しい答えは0.666666…で無限に続くのが正解ですが、
普通そのような表示はできません。有限な表示で正しくは2/3と表示しる
しかありません。で、例えば、電卓が0.6666666でPCが0.667なら少なく
とも電卓の方が正解に近い値を示していますよね。
しかし、表示の問題でなく、もっと根本的な誤差の原因としては、PCで計算
を行う際に何桁の数値を扱っているのかということがあります。
ものすごく簡単な話、円周率π(パイ)を最近は小学校でπ=3で良いという議
論がありました。私はもちろんπ=3.14と習いましたが。ですから計算の中で
扱う桁数(有効桁数)によって答えに差がでてきますよね。またPC内部での
計算は2進数で行いますが、入力は10進数ですし、答えも10進数ですよね。
つまり、PC内では10進数を2進数に、逆に2進数を10進数に変換しています。
このときにも誤差が生じる原因の一つになります。
てな訳で、分数を扱えないPCでは、なにがしかの誤差は生じます。
以上、簡単ですが(笑)、o2kaさんの補足でした。

▲このページのトップに戻る
25435どうなんだろ。SARU 2003/4/24-11:25
記事番号25432へのコメント
>>
>>桁あふれ。

ってのはプログラム上でのデータ型って事なんじゃないのかな?

例えばEXCELのマクロでも

=============================================
Public Sub dd()

Dim i As Single
Dim j As Double
Dim k As Currency
Dim l As Long
Dim m As Integer
Dim n As Variant
Dim o As Byte
i = 2 / 3
j = 2 / 3
k = 2 / 3
l = 2 / 3
m = 2 / 3
n = 2 / 3
o = 2 / 3

Debug.Print "i=" & i
Debug.Print "j=" & j
Debug.Print "k=" & k
Debug.Print "l=" & l
Debug.Print "m=" & m
Debug.Print "n=" & n
Debug.Print "o=" & o

End Sub
=============================================
とかで実行すると答えは
i=0.6666667
j=0.666666666666667
k=0.6667
l=1
m=1
n=0.666666666666667
o=1

と異なって来るって事を言っておられるのでは?

>つまり、PC内では10進数を2進数に、逆に2進数を10進数に変換しています。
>このときにも誤差が生じる原因の一つになります。
>てな訳で、分数を扱えないPCでは、なにがしかの誤差は生じます。

80386(486?)以前の数値演算演算プロセッサが別売り時代のPCなら
ともかく、CPU上に数値演算プロセッサが内蔵されてからはそんなこと
ないんじゃないかな。

※初代PENTIUM(90Mhz以下)は数値演算にバグがあったけど。
 私の言ってることもいいかげんですが..(笑)
 


▲このページのトップに戻る
25450Re:どうなんだろ。sumi 2003/4/24-21:27
記事番号25435へのコメント
SARUさんは No.25435「どうなんだろ。」で書きました。
>>>
>>>桁あふれ。
>
有効桁数による差ですよね。
Win2Kに付いている電卓は有効桁数が32位あるみたいです。

▲このページのトップに戻る
25468Re:どうなんだろ。o2ka 2003/4/25-00:26
記事番号25435へのコメント
SARUさんは No.25435「どうなんだろ。」で書きました。
>>>
>>>桁あふれ。
>
>ってのはプログラム上でのデータ型って事なんじゃないのかな?
>
>Dim i As Single
>Dim j As Double
>Dim k As Currency
>Dim l As Long
>Dim m As Integer
>Dim n As Variant
>Dim o As Byte
(略)
>と異なって来るって事を言っておられるのでは?

です〜。

>※初代PENTIUM(90Mhz以下)は数値演算にバグがあったけど。

浮動小数点計算を省略するためにあらかじめ計算結果をチップに格納したのは
良いけど、ひと桁間違えて焼き付けたためにチップを無償交換するはめになった
あの事件ですね。
 ↑最初は「数万回に一回しかバグらないから影響は無い」と言って
  渋っていたけど・・・

懐かしいな〜〜〜・・・。

▲このページのトップに戻る
25500Re:PCと電卓でのbyeb 2003/4/25-21:16
記事番号25432へのコメント
dobrzeさんは No.25432「Re:PCと電卓での」で書きました。
>o2kaさんは No.25425「Re:PCと電卓での」で書きました。
>>byebさんは No.25422「PCと電卓での」で書きました。
>>>OS名:Linux
>>>パソコン名:
>>>ソフト名:
>>>簡単な計算をプログラムで行って
>>>電卓でも同じ計算をしたんですが コンマいくつかで誤差があるんですが
>>>これはどうしてでしょうか
>>>答えは どちらも同じなのですがこの誤差の理由は何なんでしょうか
>>
>>桁あふれ。
>
>o2kaさんの回答の通りですが、「小さな親切大きなお世話」と思いつつも
>もちょっと説明。
>byebさんが計算された時に誤差があるとの記述でしたが、どちらが正しいの
>でしょうか?
>2/3を計算すると、正しい答えは0.666666…で無限に続くのが正解ですが、
>普通そのような表示はできません。有限な表示で正しくは2/3と表示しる
>しかありません。で、例えば、電卓が0.6666666でPCが0.667なら少なく
>とも電卓の方が正解に近い値を示していますよね。
>しかし、表示の問題でなく、もっと根本的な誤差の原因としては、PCで計算
>を行う際に何桁の数値を扱っているのかということがあります。
>ものすごく簡単な話、円周率π(パイ)を最近は小学校でπ=3で良いという議
>論がありました。私はもちろんπ=3.14と習いましたが。ですから計算の中で
>扱う桁数(有効桁数)によって答えに差がでてきますよね。またPC内部での
>計算は2進数で行いますが、入力は10進数ですし、答えも10進数ですよね。
>つまり、PC内では10進数を2進数に、逆に2進数を10進数に変換しています。
>このときにも誤差が生じる原因の一つになります。
>てな訳で、分数を扱えないPCでは、なにがしかの誤差は生じます。
>以上、簡単ですが(笑)、o2kaさんの補足でした。
>

いろいろな返答ありがとうございました

>byebさんが計算された時に誤差があるとの記述でしたが、どちらが正しいの
>でしょうか?
計算上どっちも正しいんですが
今回PCと電卓でどうして誤差がでるということで発言した次第です
どうもありがとうございました