数値の丸め

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
河川屋

数値の丸め

#1 投稿記事 by 河川屋 »

#N88BASIC
dim x as Double
  x=-1 : print using "###.#";x
とすると、「-0.9」と表示される。

また、
x=-1.9 : y=CInt(x)
とすると、y=-1となる(Fixと同じ動作をする)が、
ヘルプにはCIntは四捨五入とあり、ヘルプどおりの動作をしない。。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: 数値の丸め

#2 投稿記事 by 7 »

河川屋さん さんが書きました:また、
x=-1.9 : y=CInt(x)
とすると、y=-1となる(Fixと同じ動作をする)が、
ヘルプにはCIntは四捨五入とあり、ヘルプどおりの動作をしない。。
ヘルプの表現が間違ってるんだと思います。
CDbl関数やCSng関数を見ると分かりますけど、これらの関数はたんに型変換をいっそう明示する為の関数です。
CInt関数の定義は以下のようになっています。

コード: 全て選択

Function CInt(ByVal number As Double) As Long
	CInt=number As Long
End Function
指定された倍精度浮動小数点型の数値を整数型に変換してるだけですね。

あ。以下のようにマクロ関数にしても良さそうですね。ダメなのかな?

コード: 全て選択

Const CDbl(number) = number As Double
Const _CUDbl(number) = number As Double
Const CDWord(num) = num As DWord
Const CInt(number) = number As Long
Const CSng(number) = number As Single
追記。
小数点型(?)を整数型に変換する時、死者誤入してくれないっていうバグとも言えますし、小数点型を整数型に変換する時、四捨五入してくれっていう要望もできますね。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#3 投稿記事 by C1000 »

別な突っ込みですけど死者誤入は四捨五入ですよね?
返信する