我正在构建一个系统来从异构文档中读取表格,并且想知道管理浮点数(列)的最佳方法。该列可以表示为我将使用的实数List<Double>
(我使用的是 Java,但其他语言的经验会很有用。)我还希望将表序列化为 CSV 文件。因此,表格可能如下所示:
"material", "mass (g)", "volume (cm3)",
"iron", 7.8, 1.0,
"aluminium", 27.3, 9.9,
和 column2(基于 1)将由List<Double>
{new Double(7.8), new Double(27.3)}
我也可能希望计算密度(质量/体积)并导出一个新列(“密度(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中有以下选项
- 空引用
Double.NaN
Double.MAX_VALUE
Double.POSITIVE_INFINITY
是否有关于何时应使用上述 Java 异常值的协议?我已经阅读了有关他们行为方式的问题。(我想依靠链接他们的操作)。如果有协议,这些值可以序列化并读回吗?(例如,Java 是否解析"0x7ff0000000000000L"
为等于Double.POSITIVE_INFINITY
我已经为规范中的一些精度损失做好了准备(OCR 中经常出现错误、缺少数字等,所以这是一个“足够好”的练习)。