ab.com コミュニティ

ActiveBasicを通したコミュニケーション
前回の訪問日時: 2019年10月19日(土) 08:35 現在時刻 - 2019年10月19日(土) 08:35

All times are UTC+09:00




 [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2012年4月25日(水) 17:54 
何時も、お世話に成っています。

一部の演算結果とStr$()関数に不具合(?)

Dim t As Double

t=999999999999994/10
OutputDebugString("999999999999994/10 = "+Str$(t)+Chr$(10))
OutputDebugString("999999999999994/10 = "+Str$(999999999999994/10)+Chr$(10))

OutputDebugString("999999999999999 : "+Str$(999999999999999)+Chr$(10))

[結果]
999999999999994/10 = 99999999999999.5
999999999999994/10 = 99999999999999.5

999999999999999 : 1.00000000000000e+015

後者のStr$()関数ですが、function.shp の _ecvt()中の 「正規化」の所で

While 9.99999999999999<=value '10<=value
value=value/10
dec=dec+1
Wend

While 10<=value '10<=value
value=value/10
dec=dec+1
Wend

にすれば

OutputDebugString("999999999999999 : "+Str$(999999999999999)+Chr$(10))

[結果]
999999999999999 : 999999999999999

と表示しますが、ダメでしょうか?


宜しくお願いします。


ページトップ
   
 
投稿記事Posted: 2012年4月27日(金) 11:06 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 201
お住まい: 東京都
演算結果の件は、浮動小数点の演算結果の誤差によるものと思われます。
だから不具合ではないと思いますが。


最後に編集したユーザー たかせ [ 2013年7月16日(火) 16:10 ], 累計 1 回

ページトップ
   
 
 記事の件名:
投稿記事Posted: 2012年9月30日(日) 02:12 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
私も、そこはWhile 10<=valueのほうが良さそうだと思います。

#いずれにせよ、AB5ではそのあたりの処理もきちんと見直します。


ページトップ
   
 
 [ 3 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: CCBot & ゲスト[0人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean