異種のドキュメントからテーブルを読み取るシステムを構築していますが、浮動小数点数(の列)を管理するための最良の方法を知りたいです。列を実数で表すことができる場合は、使用しますList<Double>
(Javaを使用していますが、他の言語の経験があれば便利です)。また、テーブルをCSVファイルとしてシリアル化したいと思います。したがって、テーブルは次のようになります。
"material", "mass (g)", "volume (cm3)",
"iron", 7.8, 1.0,
"aluminium", 27.3, 9.9,
列2(1ベース)は、List<Double>
{new Double(7.8), new Double(27.3)}
また、密度(質量/体積)を計算し、新しい列( "density(g.cml-3)")をリストとして導出したい場合もあります。
{new Double(7.8), new Double(2.76)}
ただし、入力値が欠落している、異常である、またはファジー概念で表されている場合があります。一部の変換では例外がスローされる場合があります(これをキャッチして上記のいずれかに置き換えます)。例は次のとおりです。
1.0E+10000
>10
10 / 0.0 (i.e. divide by zero)
Math.sqrt(-1.)
Math.tan(Math.PI/2.0)
リスト要素の異常な値に対して、Javaで次のオプションがあります
- null参照
Double.NaN
Double.MAX_VALUE
Double.POSITIVE_INFINITY
上記のJavaの異常な値を使用する必要がある場合のプロトコルはありますか?私は彼らがどのように振る舞うかについてこの質問を読みました。(私は彼らの操作の連鎖に依存したいと思います)。また、プロトコルがある場合、値をシリアル化して読み戻すことができますか?"0x7ff0000000000000L"
(たとえば、Javaは次の値に等しい数に解析しますかDouble.POSITIVE_INFINITY
仕様の精度がいくらか失われることに備えています(OCRにエラーがある、数字が欠落しているなどの場合が多いため、これは「十分な」演習です)。