• ベストアンサー

VisualBasic6.0 SP5 のおもしろバグ発見!?

おもしろい(?)というか、困った現象が起きました。 フォーマット関数での出来事です。 Format("12C33","000000") = 12C33 Format("12P33","000000") = 12P33 と、そのまま値が返ってくるのですが、 なぜか、アルファベット部分が『D』の場合のみ Format("12D33","000000") 12000000000000000000000000000000000 が返ってくるのです! これは何故なんでしょう!? 周知の事実なんでしょうか? どなたかご存知のかた教えてください。 このせいで、エラーが起きてしまう箇所を 発見しました。 VisualBasic プロフェッショナルの 皆様の回答お待ちしています。 単に無知なだけ??・・・(汗)

  • GBSGBS
  • お礼率36% (370/1012)

質問者が選んだベストアンサー

  • ベストアンサー
  • colocolo62
  • ベストアンサー率32% (1162/3624)
回答No.4

数値計算の歴史?から来た仕様といって良いのではないでしょうか。 計算機で大変大きな数値または大変小さな数値を取り扱う時に誤差を少なくするために、指数を使った浮動小数点で数値を表します。 それが、「12E33」のような表し方で定義されてきました。「E」はexponent(指数)のEです。 「12E33」×「1E-33」は、「12E0」となって答が出るのですが、これを固定小数点演算で計算すると、すごい桁数の演算器を用意しないと、答が「0」になってしまいます。 また、「D」は更に精度よく計算をするための倍精度の数値を表すために使われてきました。 「D」は、double precision(倍精度)のDです。

GBSGBS
質問者

お礼

なるほどー。分かりやすい回答ありがとうございました。

その他の回答 (3)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 ちなみに、「12E33」も同じです。 つまり、12×10の33乗。 なお、「12D-33」や「12E-33」は、 「000000」 です。 これは、12×10の-33乗と判断され、表示形式が整数6桁なので、小数部分が消えてしまうから。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 ちなみに、「12E33」も同じです。 つまり、12×10の33乗。 なお、「12D-33」や「12E-33」は、 「000000」 です。 これは、12×10の-33乗と判断され、表示形式が整数6桁なので、小数部分が消えてしまうから。

GBSGBS
質問者

お礼

おぉ、タイムリーな回答ありがとうございます! 仕様の一言で片付けられてしまいそうな予感が しますね・・。うーん。

noname#5584
noname#5584
回答No.1

> Format("12D33","000000") > 12000000000000000000000000000000000 > > が返ってくるのです! 12D33 → 12 × 10の33乗 と解釈されるようです。(D = Decimal の略?) ですので、バグではなく仕様だと思います。 IsNumeric("12D33") も True と評価されます。

GBSGBS
質問者

お礼

そうなのです。 IsNumericもTrueなんです。 こんな仕様アリなんでしょうか・・・。 ちなみにEでも同じようなことが起きるみたいです。 これも仕様なのでしょうか? さらに IsNumeric("D3")はfalseなんですよ・・・。 回答の論理でいうとTrueのはずなんですが。 Dが数字の間に挟まれる時のみに起きるんです。 こんな仕様ありなんでしょうか?

関連するQ&A

  • 画面バグについて

    先日FF11をやってる際、突然PCが再起動し、PC再起動後FF11を起動したところ画面が突如乱れる(画面がバグる)という現象が起きました。この現象はずっと続きプレイできない状態に陥ってしまいました。 そして、FF11を終了するとこの現象は直ります。 他にもベンチマークの3DMarkを起動してデモ画面や測定画面に変わるときにもバグ現象が起こります。 PCのフォーマットをしてソフトを再インストしてみましたが同じようにこの現象が起こります。 これはどうしたらいいでしょうか? グラフィックボード買い替えなければいけないでしょうか? どなたかご回答お願いします。下にシステム情報の一部を載せます。 CPU: P4 3.4GHz メモリ:1024MB VGA:Aeolus PCX6600GT-DV128 OS:Windows XP SP2 DirectX 9.0c

  • ビタミンP

    ビタミンPっていうのがあると聞いたのですが どういう効能があるのですか? また、ビタミンって いったい アルファベットのどこまで(A,B,C...P...)ある(発見されている)のですか?

  • ハードディスクを認識しなくなりました・・・

    ハードディスクを物理的に二つ用いています。(CとD) PC再起動後、Dドライブにアクセスしようとしたところ、 「フォーマットしますか?」 というメッセージが表示され、アクセス不可能となってしまいました。これはどのような現象なのでしょうか? 中のデータを諦め、フォーマットするしか道はないのでしょうか? わかる方ぜひお願いします。 使用PC:自作PC 使用OS:Windows2000Professional

  • Excelの関数について教えてください。

    閲覧ありがとうございます。 Excelの関数でわからないところがあるので教えてください。 画像の学科のところで、 学籍番号のアルファベット、E=情報メディア学科,P=保育学科,C=ビジネスキャリア学科,L=生活プロデュース学科.になるような関数が入るはずなのですが、難しくてできませんでした。 僕はIF関数を使って 自分なりに[=IF(OR(B$3=*E*,B$3=*P*,省略)"情報メディア学科","")]とやったのですが、エラーがでてしまいました。 自分で見ても根本的に間違ってる気がします。 どの関数をどのように使えばいいのか教えていただけませんか?

  • コンポーネント端子について

    コンポーネント端子には2種類(Y/Cb/CrとY/PbとPr)ありますよね。 それぞれの端子の対応フォーマットで前者のほうは480iまで、後者のほうは480p、720p、1080i対応というのは間違っているのでしょうか? テレビによって、対応フォーマットが違うとも聞いたのですが、決まっていないのでしょうか? また、Y/Pb/Prが720pもいけるとしたら、D4端子なみで、D3端子つきテレビよりも良いってことになるような気がするんですがどうなんでしょうか。 また、DVDなどのコンポーネン信号のものはY/C混合してしまうような端子が駄目なのは理解できるのですが、コンポジット信号のような初めから混合されているようなものは、端子で分離させるのと3次元Y/C分離回路などで分離させるのとではどのように違うのでしょうか? 端子はあえてコンポジットでY/C分離は回路でするほうがいいとかあるのでしょうか? 質問攻めでごめんなさい。

  • javaの円上の描写に関する質問。

    javaの初歩的な質問ですけど答えていただけるとうれしいです。 アルファベットの {a,b,c,d,e,f,g,h i,j,k,l,m,n,o,p} の16文字を三角関数を用いて円状に並べて表示をしたいのですけどイマイチやり方が思いつきません>< 回答、よろしくお願いします。

  • RC回路の過渡現象

    今、アース、電源、スイッチ、抵抗R、コンデンサC、アースの順につながれたRC回路があるのですが、この過渡現象を考えたいと思っています。抵抗とコンデンサの間に点Pを設けて、点Pの電位を時間の関数として考えます。 ここで、わからないとろがいくつかあるので教えていただきたいです! この場合、Cにはもとから電荷が蓄えられてるのでしょうか? 直列回路だけど、アースがあることによって、普通のRC回路との過渡現象における違いとかありますか?アースがついた時点で頭がこんがらがってよくわからなくなりました。。。 どなたか教えていただきたいです。お願いします!

  • バグ発見率について

    いきなりですが、バグ発見率って言う言葉はどういう意味なのでしょうか??

  • lsのバグ発見!?

    リナックスで最も頻繁に使用すると思われるlsに不具合を発見してしまったかも知れません!! lsの終了ステータスについてです。 lsが成功した場合、終了ステータスに0が代入されるはずなのですが、 ls /*を実行すると成功しているにもかかわらず1が代入されてしまいます。 これは私の環境だけでしょうか、どなたか試していただけますか。 ひょっとしてls /*を実行したときは終了ステータスが1になる仕様なのでしょうか。 詳しい方、教えてください。 ところで、今回のようにバグの疑いを発見した場合、 それが果たしてバグなのか仕様なのか、確認する手だてはあるのでしょうか。 またバグの場合は、既知のバグなのか未知のバグなのか確認する手だてはあるのでしょうか。 また未知のバグの場合は、どこかに報告すれば、修正版を作ってもらえるのでしょうか。

  • このサイトのバグ発見

    任意のURLを画面TOPにある、「キーワードQ&Aを検索」に入力後、検索ボタンを押下すると、どうなるでしょう。 なんと、検索結果画面ではなく、TOP画面に移行してしまいます。しかも、ブラウザのアドレスバーを見ると、なんとなんと、入力したURLがこのサイトの末尾に付加されているではないですか????? サニタジがされていないのでは???? 例: 以下のURLを入力 ja.wikipedia.org/wiki/%E6%A1%83%E5%A4%AA%E9%83%8E TOP画面に戻り、http://okwave.jp/searchkeyword/ 以下に上記URLが付加したアドレスがブラウザのアドレスバーに表示されている。このサイトの会社の開発力なんて、たいしたことないね。 とんでもない会社だ。