秀丸マクロ、プログラム初心者です。
秀丸マクロでunsigned _int64(20桁)の数値文字列の引き算をしたいのですが、うまくいきません。
秀丸で扱えるのがint(10桁)のため、文字列を単純に数値変換して計算ががきません。
20桁の文字列を2桁、9桁、9桁の3ブロックに分けて、unsigned _int64のロールオーバーや桁上がり(ブック上がり)を考慮しながらブロックごとに引き算をし、文字列に戻しているのですが、計算結果が期待通りになりません。
秀丸でのよい方法、または秀丸ではなくとも、上記と同じことをしているソースなどあれば教えていただけると幸いです。

ちなみに職場環境でインストール制限等がありできれば秀丸がよいのです。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

・10桁と書いてありますが、表現できるのは符号付き32bitの範囲なので、99...9まで全て使えるわけではありません。


・比較的簡単な手段は、配列を使って1桁1要素にして、小学校の筆算の要領でやることだと思います。
・その他、なにがどううまくいかなかったのかが不明なので、回答できません
    • good
    • 1
この回答へのお礼

kmeeさん
返信ありがとうございます。
方法論としてよいやり方、極力スマートなやり方ががないかと思っていました。
でもようやく3ブロックに分けた計算で正しく計算ができました。

>配列を使って1桁1要素にして、小学校の筆算の要領・・・
なるほどですね。
ロールオーバーしていたら最大値からの引き算を加えればよいのですね。
スマートにできそうですね。
作りなおそうかな。。。。
ありがとうございました。

お礼日時:2012/01/05 21:54

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで数値と文字を指定すると、指定数値分のセル数だけ文字列を表示するには?

エクセルの文字列表示方法について質問します。
例えば、A1セルに「3」、B1セルに「赤」と入力すると、
A3~A5の「3」つのセルに「赤」と表示されるようなことをするにはどのようにしたら良いか?
A1とB1の値を変えると、A3以降のセルに自動表示されるようにするためにはどのようにすれば良いか?
できれば、マクロを使わずに既存の関数等を組み合わせて実現できる方法があれば教えていただきたいのですが・・・。

 A B C D
1 3 赤
2
3 赤
4 赤
5 赤

Aベストアンサー

一例です。
A3に=IF($A$1-(ROW(A1))>=0,$B$1,"")を入力、下方向に必要分コピーで如何でしょうか。

Q秀丸にて、任意の5桁数字を除去したい

秀丸にて、

(12345)
(12333)
(32456)

のように、(数字は適当です)半角()で括られた任意の5桁数字を一括で除去したいと思っていますが、ヘルプで正規表現を見ながらトライしてもうまくいきませんでした。

良い方法をご教授願います。

Aベストアンサー

>ヘルプで正規表現を見ながらトライしてもうまくいきませんでした。
どのような入力をしてうまく行かないかを書くと良いでしょう。

大抵 "(" をエスケープするのを忘れているだけだと思いますが。

Q秀丸で、文字列+改行をコピーしたときに

秀丸で、文字列+改行をコピーしたときに
改行だけクリップボードから削除する方法はないでしょうか。
たとえば

りんご\n

をコピーした際は、

りんご

をコピーしたことにしたいです。

意味不明でしたら加筆修正しますのでよろしくお願いします。

Aベストアンサー

マクロを使えば出来るでしょうね。

実際に使うとなると、改行を削除除したデータを
・クリップボートにセットし直すのか?
・貼り付けるのか?
等によって、内容は異なるでしょうが、前者なら、末尾のマクロになります。但し、データ量が多いと、バッファが溢れます。

マクロを使い方については、ヘルプをご覧下さい。
//--------------------ここからマクロ--------------------
beginclipboardread;
while( 1 ){
$s2 = getclipboard;
if( $s2 == "" )break;
if( strstr( $s2, "\x0A" ) != -1 ){
$s2 = leftstr( $s2, strlen( $s2 ) - 1 );
}
$s = $s + $s2;
}
setclipboard $s;

Q秀丸エディタをWindows7(64bit版)にインストール可?

秀丸エディタ(64bit版)を
Windows7(64bit版)にインストールしたいのですが、
可能及び使用可でしょうか?

実際に行われた方、
ご使用中の方、
教えて下さい。

宜しくお願いします。

Aベストアンサー

まだ、インストールしたばかりですが正常に使えるようです。

Q(int)/(int)=(double)にする方法

(int)/(int)=(double)にする方法を教えて下さい。
例えば、

int a, b;
double c;
a=1;
b=2;
c=a/b;

とすると、cとして0が計算されますよね。
0でなく0.5と計算させる方法をご存知の方教えて下さい。
ちなみに、a,bを最初の宣言の時点でdouble型にすることはできません。
よろしくお願いいたします。

Aベストアンサー

javaしか しらないので javaだと、

キャスト 

int a, b;
double c;
a=1;
b=2;
int d=0;
d=a/b;
c=(double)d;


自動型変換

int a, b;
double c;
a=1;
b=2;
c=(double)a/b; または c=a/(double)b;


だた 気がします。


人気Q&Aランキング

おすすめ情報