| |
>[元データ例1]
>#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
>
>上記の元データ例1の#514のように計算結果が少数の場合、
>0と出力されてしまいます。
>
少数の場合にどうなってほしいか不明です。
少数を使いたい場合、
http://hide.maruo.co.jp/software/hmfloat.html
の秀丸エディタ浮動小数点数バージョンをつかって、
マクロの先頭に
setfloatmode 1;
を追加、
ポンタさんの数式計算DLLも浮動小数点数バージョンにすれば
少数はでると思いますが(未確認)少数以下が0の場合に
どうなるか不明(未確認)。
>[元データ例2]
>#532=#0
>#533=#0
>#534=#0
>#535=#0
>#536=#0
>
>また元データ例2のように=の後が#0の場合、
>そのまま#0を出力したい。
>
$exp = gettext(#bx, #by, #ex, #ey, 1); // =の右辺を取得
cut; // 切り取る
if( strstr($exp, "#0" ) >= 0 ){
insert $exp; // "#0"があればそのまま
} else {
// "#0"がなければ計算する
#n = dllfunc("SetExpression",$exp); // 計算の実行
#e = dllfunc("ErrorNo");
if (#e!=0) {
insert $ex; // 計算に失敗したら戻す
} else {
#n = dllfunc("Value"); // 結果取得
insert str(#n); // 結果表示
}
}
のように#0を判定すればよいでしょう。
|
|