LS-DYNA用の浮動小数点数をフォーマット

LS-DYNAのキーワードファイルを書きだすプログラムを書いたところ、浮動小数点数を固定文字数(10文字)にフォーマットする所でつまづいた。 具体的には String.formatやDecimalFormatの動作が遅い(String.formatよりはDecimalFormatのほうが速いが) 文字数を10文字に制限することが難しい(絶対値の大小比較を行なって桁数ごとに条件分岐をしても、四捨五入によって意図しない文字数(11文字)になる) という問題にあたった。そこでdoubleから長さ10の文字列を力技で書きだすロジックを自作した。特徴は以下の通り。 正の時は先頭にスペース、負の時は先頭に”-“を入れる 10文字の制限の中で最も有効桁数が大きくなるようにフォーマット 四捨五入はしない! DecimalFormatの15倍高速(もう少し工夫はできるが) private static String formatFloat10(double d){ char[] c = new char[10]; double a; if(d == 0.0){ return " 0.0000000"; } if(d < 0){ c[0] = '-'; a = -d; }else{ c[0] = ' '; a = d; } int m = (int)Math.floor(Math.log10(a)); if(m <= -100){ for(int i = 1; i < 1 - m; i++) a *= 10; c[1] = (char)('0' + Math.

PPTX外部リンク抽出

概要 PowerPointで動画を入れることはよくあるが、その動画がどこにあるファイルなのか分からなくなることがよくある。 一応、PowerPointでもパスを表示させることはできるのだが、何せ表示できる文字数が短すぎて分からない、という無駄機能状態。 ↑このように「ファイルへのリンクの編集」で表示させることはできるのだが、 深い階層のファイルを参照していると、表示しきれない。 幸い、最新のPowerPointファイル(.pptx)はxmlファイルをzipで固めたものなので、中身を解析して、外部にリンクしているもののパスと、それが使用されているスライドのページ数を抽出するプログラムを作ってみた。 ダウンロード ExtractPPTXExLink.jar 使い方 ExtractPPTXExLink.jarを実行すると、pptxファイルの場所を聞かれるので、1つ選択する。 すると、pptxと同じフォルダに(pptxファイル名)_exlink.txtというファイルにスライドページ番号と外部リンクのパスが出力される。 動作環境 Java 6以上があればOSは問わないはず Windows XP, 7, 8.1, 10, Ubuntu 14.04 LTSで一応動作を確認