Double型で数値を取得する方法

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者

Double型で数値を取得する方法

#1 投稿記事 by »

電卓を製作中なのですが、EditBox1の数値をDouble型で取得する方法が
分かりません。どなたが教えていただけないでしょうか
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

#2 投稿記事 by hira »

GetWindowText関数を使っていったん文字列でEditBox1の内容を取得し、それをVal関数の引数に指定すれば目的の数値が取得できるのではないでしょうか。

#3 投稿記事 by »

EditBox1に表示されている小数値やマイナス値も、
ご提示下さった方法で得られますか。

#4 投稿記事 by »

何とか出来ました。ありがとうございます。
気になったのですが、Double型の範囲は、1.7E +/- 308 (15 桁)
とヘルプに書いてありますが、一体いくつのことなのでしょうか。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#5 投稿記事 by イグトランス »

それは指数表記で,つまりとてつもなく0がとてつもなく沢山(308個前後)並ぶ数も表現できますが,
実際に計算などが行われるのは端から15桁分だけと言うことです。

実数は「m × (rのe乗)」という形へ変形できます。(たとえば123.456は1.23456 × (10の2乗)という具合です)
Double型は,mが15桁(原則1 ≦ m < 10),rを10としたらeは-307 ~ +308に収まる数を記憶できるような大きさなのです。

細かいことを言えば実際にはコンピュータですから二進法を使うので正確にはもう少し異なりますけどね。
ゲスト

#6 投稿記事 by ゲスト »

15桁分計算できるとのことですが、0.000001 * 3 を計算させても、
正常な値が得られません。どうしてでしょうか。

#7 投稿記事 by »

上の書き込みは私です。名前の入力忘れていました。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#8 投稿記事 by konisi »

正常な値が得られないのは、それが小数だからだと思います。
確か昔、これについて何かスレッドがあったような気がしたのですが、思い出せません。

小数を保存する時に2進数で保存するため、わずかな誤差が生まれるため計算が合わないように感じるものかと思います。

わずかな誤差が出る理由がわからない時は、1を7で割った値を有限桁の10進数では完全に保存する事が出来ない事を少し考えて見てください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
返信する