|
>実際に浮動小数点版にすると下記のようになった。
おはようございます
実際、浮動少数点バージョンで実行したところ、下記のマクロ、データで行ったとこ
ろ少数点以下が表示されません。浮動小数点数バージョンで実行できているのです
が・・・
三月さんのような結果にしたいのですが
[マクロ]
setfloatmode 1;
loaddll "Mathcalc.dll";
if( 1/2 == 0 ) {
message "整数バージョンです";
} else {
message "浮動小数点数バージョンです";
}
gofiletop; // ファイルの先頭へ
searchdown "="; // =を探す
while( result ) { // =がなくなるまで
right; // =の右側
#bx = x; #by = y; // =の右の開始位置
beginsel; // 範囲選択開始
golineend; // 行末まで選択
#ex = x; #ey = y; // 行末の位置
$exp = gettext(#bx, #by, #ex, #ey, 1); // =の右辺を取得
cut; // 切り取る
if( strstr($exp, "#0" ) >= 0 ){
insert $exp; // "#0"があればそのまま
} else { // "#0"がなければ計算する
//message($exp);
#n = dllfunc("SetExpression",$exp); // 計算の実行
#e = dllfunc("ErrorNo");
if (#e!=0) {
insert $ex; // 計算に失敗したら戻す
} else {
#n = dllfunc("Value"); // 結果取得
insert str(#n); // 結果表示
}
}
finddown; // 次の=を探す
}
owari:
freedll;
endmacro;
[データ]
#500=0
#501=0
#502=18432*65536/33554432
#503=0
#504=20480*65536/[67108864*2]
#505=25600*65536/8388608
#506=16384*65536/[67108864*8]
#507=28160*65536/33554432
#508=-25088*65536/33554432
#509=0
#510=-20480*65536/33554432
#511=0
#512=-25600*65536/67108864
#513=-[29491*65536+13107]/[67108864*4]
#514=-[32112*65536+41943]/[67108864*64]
#515=-32768*65536/67108864
#516=[24903*65536+44565]/[67108864*64]
#517=30720*65536/33554432
#518=16384*65536/[67108864*16]
出力結果
#500=0
#501=0
#502=36
#503=0
#504=10
#505=200
#506=2
#507=55
#508=-49
#509=0
#510=-40
#511=0
#512=-25
#513=-7
#514=0
#515=-32
#516=0
#517=60
#518=1
なぜか理由がわかりません。
宜しくお願いします。
|
|