http://oshiete1.goo.ne.jp/kotaeru.php3?q=88809
の質問に関連して、質問します。

arataさんの回答にありました参考URL
http://www.microsoft.com/mscorp/worldwide/japan/ …
を見ました。
そこにあった記述でわからないことがありました。「数値の丸め」の項に
「Visual Basic 4.0 で数値の丸めが発生するケースは、主に代入と
Format 関数があります。
代入する値が代入先のデータ型の有効けたを超える場合に丸めが行われます。
ここでの丸めは IEEE (米国電気電子技術者協会) 規格のうちでもっとも
一般的である "いちばん近い偶数に丸める" という方法をとっています。
例えば整数型への代入では、1.5 は 2、2.5 も 2、3.5 は 4 に変換されます。
これは四捨五入より結果に片寄りが少なく、誤差の累積が最も少ない方法の
ひとつです。」
この「いちばん近い偶数」を選ぶ理由は何でしょうか?
なぜ奇数はダメなのか?ご存知の方、教えてください。

このQ&Aに関連する最新のQ&A

Excel 2進数」に関するQ&A: Excelで2進数の表示

A 回答 (3件)

四捨五入の場合


0.1,0.2,0.3,0.4の4つの値が小さく
0.5,0.6,0.7,0.8,0.9の5つの値が大きくなります。
均等に値が発生するとして、値の変化は
-0.1-0.2-0.3-0.4=-1
0.5+0.4+0.3+0.2+0.1=1.5
ですから、0~99の間で、100個の値が発生する場合、0~1毎に0.5ずれるのですから、+0.5*10で+5ずれる可能性が高いわけです。これは結構大きな値ですね。

IEEEの丸めの場合
奇数では、0.5は切上げ、偶数では切り捨てられますから、
誤差の累積が0に近いわけですね。

ですから、合計値の誤差を問題にする場合は、後者の方が、合理的ですね。ちなみに、前者を算術型、後者を銀行型の丸めといいます。

本当かどうか知りませんが、アメリカの銀行では後者を使用していると聞いています。

で、偶数か、奇数かですが、どちらでも同じだと思います。どっちでもよくて、偶数に決めたのでは?
    • good
    • 0
この回答へのお礼

ありがとうございました。
お礼が遅れてすみません。

お礼日時:2001/06/26 13:49

推測ですが、これは少数を記録する方式の問題だと思います。


少数は0.xxxxx×10^xxという方式で、xxの部分をすべて2進数で記録するので、2の倍数にするのが都合がよく、奇数にすると誤差が増えてしまうのでしょう。
これはおそらく、浮動小数点型という少数の記録方式を理解すれば、わかることだと思います。
私はあまり突っ込んでいませんが、調べてみては?
    • good
    • 0
この回答へのお礼

お礼が遅れてすみません。
偶数にする理屈に説得力があります。
調べてみます。
ありがとうございました。

お礼日時:2001/06/26 13:48

 参考URLにある



「これは四捨五入より結果に片寄りが少なく、誤差の累積が最も少ない方法のひとつです。」

 の通りではないでしょうか?
 Excelのシート上では大丈夫なのに、VBAでは偶数になってしまうっていうのもそうですが、理解はできますがなんか納得いかないですよね。

 統計的な数字の四捨五入には問題ないんでしょうけど、金額の端数処理などには全く使えないですよね。
    • good
    • 0
この回答へのお礼

ありがとうございました。
お礼が遅れてすみません。

お礼日時:2001/06/26 13:51

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q偶数=正義、奇数=悪ですか?

どうなのでしょうか?^^

太陽=2文字で悪。偶数=悪、奇数=正義のはず。

だ、とか、た、に点々は、1文字追加して、だ=2文字になります。

基本的には、ひらがなとカタカナに分けられるかと。

そんなわけで、
偶数=正義、奇数=悪ですか?

Aベストアンサー

そういう宗教の定義であればそうなのでしょう。

●奇数=正義のはず。
○「正義」という言葉は2文字で悪なのでは?(笑)
 「悪」という言葉は1文字で奇数、正義?(笑)

 精神科の受診をお勧めします。

Qあるサイト(https://search.npb.go.jp/kanp

あるサイト(https://search.npb.go.jp/kanpou/)の認証画面に自動的にID/PASSを入力して、自動的にログインするようなプログラムを作りたいのですが、ID/PASSの入力は問題無く行えるものの、ログインの際にエラー(予期しない操作により、処理中にエラーが発生しました。再度ログインを行ってください。)となります。何が悪いのでしょうか?

【ログイン部分のプログラム】
ieTarget = CreateObject("InternetExplorer.Application")
ieTarget.Visible = TrueValue = KANPOU_ID
.document.Forms(0).elements("password").Value = KANPOU_PASS
.document.forms(0).elements.submit()

ieTarget.navigate("https://search.npb.go.jp/kanpou/")
Do While (ieTarget.busy)
Loop
Do While (ieTarget.document.ReadyState <> "complete")
Loop
With ieTarget
.document.Forms(0).elements("uji.model.4.value_userId").Value =KANPOU_ID
.document.Forms(0).elements("password").Value = KANPOU_PASS
.document.forms(0).elements.submit()
End With

あるサイト(https://search.npb.go.jp/kanpou/)の認証画面に自動的にID/PASSを入力して、自動的にログインするようなプログラムを作りたいのですが、ID/PASSの入力は問題無く行えるものの、ログインの際にエラー(予期しない操作により、処理中にエラーが発生しました。再度ログインを行ってください。)となります。何が悪いのでしょうか?

【ログイン部分のプログラム】
ieTarget = CreateObject("InternetExplorer.Application")
ieTarget.Visible = TrueValue = KANPOU_ID
.document.Forms(0).elem...続きを読む

Aベストアンサー

ループで探してしまいました。そうしたら、57でヒットしました。

> .document.forms(0).elements.submit()

ieTarget.Document.all.Item(57).Click

QExcel条件付で偶数・奇数を判断するには?

Excel上でセルの値が偶数か奇数かにより色つけをしたく
条件付書式の機能を調べていたのですが

偶数行、奇数行を色付けするには、という例は見つかるのですが
セルの値を偶数か奇数かを判断し色付けする
という方法が見つかりませんでした。

セル行列数を判断するのではなく、セル値を判断する方法はどうしたらよいのでしょうか。


1,3,4,6,7,99,115,11…
2,4,6,8,65,78,…
と書かれたシートで偶数は赤文字、奇数は青文字にするには?

Aベストアンサー

入力せるがA列とした時
条件付書式で、
■条件1(1) 「セルの値が」「次の値に等しい」「0」「未入力と0の場合(書式はそのまま)」 
■条件2(2) 「数式が」「=MOD(B1,2)=0」「偶数の場合(書式は任意)」
■条件3(3) 「数式が」「=MOD(B1,2)=1」「奇数の場合(書式は任意)」

Q数値から 全角数値、漢数字に変換

Excel VBAで 数字の1を全角の「1」漢数字の「一」にする方法とその逆の方法が知りたいです。

Aベストアンサー

replace関数で文字の置き換えをすればいいんじゃないかと。
数字なら10回回せばいいわけで。それをfunctionにしちゃえば汎用的に使えるでしょうし。

あと、半角全角の変換ならstrconv関数も使えるかも。ただし数値以外も変換されますが。

Q偶数と奇数の和は奇数になることを説明しなさい

中2の数学の問題です。

問題:
偶数と奇数の和は奇数になることを説明しなさい。

問題集の解答で疑問に思う点がありましたので質問させていただきます。
解答:
m,nを自然数とすると偶数は2m、奇数は2n-1と表せる。
2数の和は、
2m+2n-1=2(m+n)-1
m+nは自然数だから2(m+n)は偶数になり、2(m+n)-1は奇数になる。
よって偶数と奇数の和は奇数である。
(証明終わり)

上記証明でわからない点が2点あります。
(1)m,nをなぜ自然数に限定しているのか。
m,nは一般に整数ではないのでしょうか?中学レベルではマイナスの数も
偶数、奇数が定義できると思うので、私はこのm,nは整数と置くのが正しい
答え方だと思うのですが、いかがでしょうか?

(2)もしm,nが自然数と置くのが正しいとしたとき、奇数を2n+3とおいてしまうと
3(n=1)から始まる奇数になり一般に自然数全体で証明したことにならないの
ではないかという疑問があります。
2m+2n+3=2(m+n+1)+1
このような解答も見かけます。
文字式の計算上は奇数といえますが、nが自然数で奇数を2n+3とおいても
問題ないのでしょうか? 

ご回答よろしくお願いします。   

中2の数学の問題です。

問題:
偶数と奇数の和は奇数になることを説明しなさい。

問題集の解答で疑問に思う点がありましたので質問させていただきます。
解答:
m,nを自然数とすると偶数は2m、奇数は2n-1と表せる。
2数の和は、
2m+2n-1=2(m+n)-1
m+nは自然数だから2(m+n)は偶数になり、2(m+n)-1は奇数になる。
よって偶数と奇数の和は奇数である。
(証明終わり)

上記証明でわからない点が2点あります。
(1)m,nをなぜ自然数に限定しているのか。
m,nは一般に整数ではないのでしょうか?中学レベルではマイナ...続きを読む

Aベストアンサー

(1)についてですが、
負の数や0も、奇数・偶数として考える場合もあるので
m,nは整数としておくことが正解ではあります。

しかしながら、文部科学省が作った中学の教科書などでは
偶数、奇数に「0」や「負の数」を含めず、
自然数のみとして教えています。
なので、m,nを自然数に限定しているものだと考えられます。

Q現在2017/4/1から2018/3/31までの日月の入った表があります。ボタンを押すと1年足されて

現在2017/4/1から2018/3/31までの日月の入った表があります。ボタンを押すと1年足されて2018/4/1から2019/3/31になる VBAを教えてください。
よろしくお願いします。

Aベストアンサー

ANo3です。

>この様場合どうすれば自動で2/29が入りますか。
データをシリアル値(=Date型)で持つようにしているなら、うるう年は自動的に2/29日が表示できます。
(前回回答の式の表示調整の仕組みをご覧ください)

それよりも、
>表は一月ごとに区切ってあります。
・・という条件は、ご質問文には記載されていませんでしたので、ANo3で提示した式はA列に一年分がズラ~っと並ぶ前提で作成した式になっています。
(うるう年はきちんと反映されますし、翌年度に当たるセルは空白になる関数式になっています)

ひと月ごとに区切って記載するのであれば話が全然違うので、各月用に式を作成し、その月の分だけ表示できる式にしておく必要がありますね。
(添付写真では部分的にしか見えませんが、小計の行やそれ以外にも異なる種類の行が間に入っているようですので…)

>2/28から3/1の間が4行空いてます
添付の写真では2/28から3/1の間は11行空いているように見えますが…???


>表は一月ごとに区切ってあります。
2月を例に考えれば、通常は28日までで以下は空白、うるう年は29日まで表示して以下は空白になれば良いものと解釈しました。(上記の「4行」云々は意味不明なので無視しています)
そのようにするには「その月の範囲」を条件にして、あとは空白になるようにしておけば良いです。
(ANo3は年度外は空白になるようにしてありますが、それを月単位にすれば良い)

例えば2月の場合の例を挙げるとして、
前回同様に、A1セルに平成年度が数値であるものと仮定すれば・・・
その先頭(2/1)のセルには
 =DATEVALUE("h"&$A$1&"/2/1")
次のセルには
 =IF(前のセル<DATEVALUE("h"&($A$1)&"/3/1")-1,前のセル+1,"")
として31日分フィルコピーすれば、ひと月分が表示されるはずです。
(「前のセル」とあるのは2/1を表示しているセル番地のことです)

上記の式だと12か月分に対して、月の部分を少しずつ変えた式を作成する必要がありますが、セル範囲に規則性があったり、月を示すタイトルがどこかにあるような場合は、それを利用することで全部の月で同じ関数式にすることも可能です。
などと言っているよりも、事前設定の1回こっきりの作業だと思いますので、個別に設定してしまった方が早いですし、2月以外は日数が固定なのでもっと簡単な式にでき、他の月に関しては、
 = 前のセル+1
という式で、必要な範囲にフィルコピーすれば十分なはずです。

ANo3です。

>この様場合どうすれば自動で2/29が入りますか。
データをシリアル値(=Date型)で持つようにしているなら、うるう年は自動的に2/29日が表示できます。
(前回回答の式の表示調整の仕組みをご覧ください)

それよりも、
>表は一月ごとに区切ってあります。
・・という条件は、ご質問文には記載されていませんでしたので、ANo3で提示した式はA列に一年分がズラ~っと並ぶ前提で作成した式になっています。
(うるう年はきちんと反映されますし、翌年度に当たるセルは空白になる関数式になっていま...続きを読む

Q【奇数+偶数=奇数の証明】 これって間違いですか?

『奇数+偶数=奇数』の証明です。これは間違いでしょうか?

nを自然数とすると、偶数は2n、奇数は2n+1で表せるから、
2n+(2n+1)=4n+1
nは自然数だから、4nは偶数である。
よって4n+1は奇数となり、奇数+偶数=奇数である。

よろしくお願いします。

Aベストアンサー

これでは100点をあげられないなあ。
> nを自然数とすると、偶数は2n、奇数は2n+1で表せるから、
ここでは一般の偶数と奇数を考えているのだから,これではまずい。どうして偶数よりも1だけ大きい奇数しか考えないのか?

Q3つ以上の数値の中から、最も大きな数値を返すような関数はありますでしょ

3つ以上の数値の中から、最も大きな数値を返すような関数はありますでしょうか?

例えば、

biggest_value = func(3,5,9)
Msgbox biggest_value '9を表示

こんな関数です。
同様に、「最も小さな数値を返す」関数も探しています。

どなたか教えて下さい。
必ずお返事致します。

Aベストアンサー

Sub aaa()

Dim x As Long, y As Long

x = Application.WorksheetFunction.Max(10, 20, 30)
y = Application.WorksheetFunction.Min(10, 20, 30)

MsgBox x & ":" & y

End Sub

ご質問の意図にそぐってますでしょうか。

Qコンビネーションの偶数奇数判定ってできますかね

nCm コンビネーションについてですが、n,mが偶数か奇数かによって偶数奇数判定ってできないでしょうか?
分数が入ってると偶数か奇数かわからないような気がするのですが、

階乗計算をしないでできるだけ簡単にコンビネーションの偶数奇数判定をしたいのですが、

どなたか、知恵を御貸し下さい。
お願い致します。

Aベストアンサー

http://oshiete1.goo.ne.jp/qa2385467.html

Q日付の年の確認方法について A1セルに2017/4/1 コンボボックスに2018/4/1 と入ってい

日付の年の確認方法について

A1セルに2017/4/1
コンボボックスに2018/4/1
と入っています。この両方の年だけ等しいか確認するには rang("a1").Format(Date, "yyyy")=コンボボックス.Format(Date, "yyyy")で大丈夫ですか。
よろしくお願いします。

Aベストアンサー

年の比較であれば、
year(セル)
です。


人気Q&Aランキング