計算式のマクロNo.06762
togatin さん 11/09/16 12:13
 
マクロの中に計算式を入れないといけなくなり困っております。
仮に


SMAP
NAKAI
1.2345
_______ -----ここに1段上の1.2345から0.03を引いた数字を入れる
_______ -----ここに1段上の1.2345から0.03を足した数字を入れる

とあると


SMAP
arashi
1.2345
1.2045
1.2645

こうなるとOKです。
よろしくお願いします。

[ ]
RE:06762 計算式のマクロNo.06763
秀まるお2 さん 11/09/16 14:13
 
 秀丸エディタの浮動小数点数バージョンを使えば小数点以下の計算も可能です。

 それか、通常版でやるとしたら、小数点付き数値文字列を1万倍した数値に変
換する関数を作って、1万倍した値で計算させる作戦も可能です。

 1万倍した整数で計算するサンプルマクロ:

    $num = "1.2345";
    message $num + "  - 0.0300 = ";
    call ConvFloatStr2Num $num;
    #num = ##return;
    #num = #num - 0300;
    call ConvFloatNum2Str #num;
    $num = $$return;
    message $num;
    endmacro;
   



ConvFloatStr2Num:
    ##x = strstr( $$1, "." );
    if( ##x >= 0 ) {
        ##n1 = val( leftstr( $$1, ##x ) );
        $$n2 = midstr( $$1, ##x + 1, 4 );
        $$n2 = $$n2 + leftstr( "00000", 4 - strlen($$n2) );
        ##n2 = val( $$n2 );
    } else {
        ##n1 = val( $$1 );
        ##n2 = 0;
    }
    if( ##n1 < 0 ) {
        ##n2 = - ##n2;
    }
    return ##n1 * 10000 + ##n2;

ConvFloatNum2Str:
    if( ##1 % 10000 == 0 ) {
        return str( ##1 / 10000 );
    }
    $$n2 = str( ##1 % 10000 );
    $$n2 = leftstr( "00000", 4 - strlen($$n2) ) + $$n2;
    $$n1 = str( ##1 / 10000 );
    return $$n1 + "." + $$n2;

[ ]
RE:06763 計算式のマクロNo.06764
togatin さん 11/09/16 22:29
 
結構むずかしいですね

ありがとうございました。


[ ]