使用メモリ量と演算回数を削減したんだけど、Excel95落ちるようになっちゃいました・・・
多分、どこかで例外発生しているってことなんだろうけど。
おっかしいなぁ・・・って、よく見たら凡ミス。
直したら動くようにはなったけど、やはり重い。
#加算・減算だけでなく、内部で加算処理をしている乗算も重い場合がある。
リソース絡みだと思いたい。
Excel95のリソース制約は一番厳しいので、Excel95で動けばExcel2003でも動く。
#Excel2007からは別物だけど。
使用メモリ量と演算回数を削減したんだけど、Excel95落ちるようになっちゃいました・・・
多分、どこかで例外発生しているってことなんだろうけど。
おっかしいなぁ・・・って、よく見たら凡ミス。
直したら動くようにはなったけど、やはり重い。
#加算・減算だけでなく、内部で加算処理をしている乗算も重い場合がある。
リソース絡みだと思いたい。
Excel95のリソース制約は一番厳しいので、Excel95で動けばExcel2003でも動く。
#Excel2007からは別物だけど。
VirtualPC上のとあるXP。
デュアルコアだから倍速?
こんなのってはじめて。
そういや、x64CPU使うとx86Dualとして動作するとか広報したOSってあったよな~
なんか、すごく重い。
今のところ原因不明。
Excel95で桁数多い場合に発生中。
Excel2003では発生しないようだした。
Excel95では同じ計算でも発生するときと、しないときがあるようだ。
数としてはあってもいいんだけど、-0が返るパターンがあったので、符号補正を入れて修正。
別に、1文字2文字で困る文字数じゃないから放置してもいいんだけど、0と-0が違うかっていうと十進数演算の中では同じなので、だったら符号不要ということで。
多桁計算にも一応、四捨五入丸め処理を入れている。
というのは既出だが、Excelに文字数制限があるため。
つまり、表現上、数に制限が生まれるわけで、普通の有効桁と同じ扱いと思ってくれればいい。
除算した場合、循環小数なんかはその限界まで延びるのだけれど、そこで四捨五入が必要になる。
掛け算でも桁が多ければ丸める必要がある。
多分、浮動小数点絡みだと思うんだけど、微妙に異なるらしい。
それも、Excelのバージョンによって、微妙さも違うときた。
これにより、計算結果を評価するのがとても面倒なんですが・・・
どうやって評価しようかと、そんなところで躓く。
因みに、やってびっくりしたのが、=1.5*1.3-1.95って計算、Excel95でやると、2.22E-16になるんだぜ・・・。
どうしてやろうか。
多桁乗算を使って、=VALUE(HLMLT(1.5,1.3))-1.95を計算すると、Excel95でも、0が返るんだけどな。
C/C++(非.NET)でHTTPSクライアントをつくるとき、OpenSSL使わなきゃできないと思い込んでいたんだけど、ことWindowsに関して言えば、OpenSSLをインストールしなくても、IEとかで普通にHTTPSアクセス出来てるので、単なる思い込みだった。
マルチプラットホーム対応するならば別だけど、Windows専用ならば、MSXMLを使えばできるっぽい。
Windows2000以降になるようだが、IServerXMLHTTPRequestなオブジェクトを使うと、HTTPSコンテンツを取得できたので、これは素敵過ぎる。
MSXMLを使う利点は、MSXMLに不具合があっても、WindowsUpdate(MicrosoftUpdate)で対応できる点。
#つまり、MSXMLを利用するアプリケーション開発側の対応は不要ということ。
一応、オレオレエンタープライズなオレオレワイルド証明書を使ってるこのブログサイト(https://blog.fne.jp)のコンテンツも取得できたので、こいつは使える。
#エンタープライズルート証明書のインストールは必要です(多分)。
乗算と除算、ずっと考えていた方法でできそうだったので、気合い入れて実装しちゃいました。
まだ評価していないけれど。
加算・減算・乗算・除算の4関数を軽く動作確認。
処理速度にはちょっと満足できないけれど、処理結果にはほぼ満足。
小数点以下数万桁の数に意味はあるのかと問われれば、あると答える根拠を持ち合わせているわけでは無い。
けれど、逆に本当に無視していい数なんてあってよいものかと考えたら、小数点以下数万桁でも無視するのは忍びない。
だから、できるだけ多くの桁を利用したい、そのための多桁計算関数。
そして、リソースを喰い尽くす罠。
さて、どのEditionに組み込んで、バージョンをいくつにするか、決めなきゃな。
とりあえず、今回はBasicEdition(有料版)かなぁ。
因みに、まだまだ追加予定の関数はありますよ。
Windows 7の試験合格したんだけど、キャンペーン中だったことを少し忘れてた。
早期取得で先着100名にQUOカードプレゼントってやつ。
キタ。
でも、Microsoftからじゃなく、プロメトリックから。
ま、何を貰えたとか、誰から貰ったとか、あまり気にしないことにする。
重要なのは、先着100名に入ったってことだ。
開始から結構過ぎての受験だったから、無理かなって思ってたんだけど、そうでもなかったということか。
申し込みは無く、合格即自動エントリーって仕組みなので、純粋に順序で100名以内。
こういう結果を貰えるのは、まんざらでもない。
#でも、実際は期間内に合格した全員にだったりして・・・
E(10のn乗)も処理できるようになったので、なかなか使えそうなものになった。
A2セルには「=-1.23456789012345E-21+123」と、普通に計算してみた。
当たり前だが、有効桁(Excelの場合15桁らしい)丸めで無視される大きさなので、A2セルの結果は123。
A1セルのHLADD(自作関数)ではちゃんと計算できている。
HLADDなら、小数点や符号を含みながらも、3万桁超(Excel2003以前は255桁)まで対応している。
因みに、E±9999まで入力可能にしたので、本来は文字列で指定した方がよいのだが。
残念なのは、まだ加算と減算しかできないってところか。
最近のコメント