我正在使用Java 6设计一个工具,它将从医疗设备中读取数据.
每个医疗设备制造商都实施自己的固件/协议.供应商(像我一样)编写自己的界面,使用制造商的固件命令从医疗设备获取数据.大多数固件会以神秘的方式输出数据,因此接收它的供应商应该通过对其进行一些计算来对其进行扩展,以便计算出真实值.
可以安全地假设医疗数据的精确度与财务数据的精确度等同等重要.
我得出结论使用BigDecimal进行所有数值计算并存储最终值.我几乎每秒都会收到一组新的数据,这意味着,我将每秒进行计算并更新相同的值集.示例:每次呼吸时来自呼吸机的数据.
由于BigDecimal是不可变的,我担心每秒在堆中生成的对象数.特别是因为该工具必须扩展以同时从50个设备读取数据.
我可以增加堆大小和所有这些,但仍然是我的问题....
问题
我可以使用BigDecimal的任何可变表兄吗?
是否有任何现有的开源框架可以做这样的事情?
Java是否是这种功能的正确语言?
我应该看看Apfloat吗?但Apfloat也是不可改变的.JScience怎么样?
我可以使用任何Java数学库来实现高精度
我的目标是精度高达10位数.不需要更多.那么这种精度的最佳库或行动方案是什么?
我建议您在得出 BigDecimal 不适合您的需求的结论之前,先实际分析一下您的场景。不可变的性质会对您的场景产生重大影响,这并不是一个既定的结论。现代 JVM 非常擅长分配和销毁大量对象。