首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中使用可变类执行高精度的计算?

如何在Java中使用可变类执行高精度的计算?
EN

Stack Overflow用户
提问于 2011-04-19 19:29:04
回答 5查看 2.8K关注 0票数 6

我正在设计一个使用Java 6的工具,它可以读取来自医疗设备的数据。

每个医疗设备制造商都实施自己的固件/协议。供应商(像我一样)编写自己的接口,使用制造商的固件命令从医疗设备中获取数据。大多数固件都会以一种神秘的方式输出数据,因此接收数据的厂商应该通过对其进行一些计算来扩展数据,以便显示出真正的值。

可以肯定的是,医疗数据的精确性和财务数据的精确性一样重要。

我得出的结论是使用BigDecimal进行所有的数值计算并存储最终值。我几乎每秒钟都会收到一组新的数据,这意味着,我将每秒钟进行计算并更新同一组值。每呼吸一次,从呼吸机传来的数据。

由于BigDecimal是不可变的,所以我担心每秒在堆中生成的对象数量。特别是因为这个工具将不得不扩展到读取来自50个设备的数据在同一时间。

我可以增加堆的大小,但是这里还有我的问题.

问题

  1. 我可以用BigDecimal的任何一个变化无常的表亲吗?
  2. 有没有任何现有的开源框架来做这样的事情?
  3. Java是这种功能的合适语言吗?
  4. 我应该调查一下阿普洛吗?但Apfloat也是不可改变的。JScience怎么样?
  5. 任何用于Java的数学库都可以用于高精度
  6. 我的目标是精确到10位数。不需要更多的东西。那么,对于这种精确性,最好的库或操作路线是什么呢?
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-19 19:46:05

在您得出BigDecimal不适合您的需求这一结论之前,我建议您实际分析一下您的场景。这不是一个预先得出的结论,即不变的本性将对您的场景产生重大影响。现代JVM非常擅长分配和销毁大量的对象。

票数 3
EN

Stack Overflow用户

发布于 2011-04-19 19:50:25

double基元类型提供了大约16位的十进制精度,为什么不直接使用呢?那你就不会碰那堆东西了。

票数 0
EN

Stack Overflow用户

发布于 2011-04-19 21:02:33

垃圾收集器应该在清理对象方面做得足够好,但是如果您仍然想要不变的数字,您可以使用反射来访问BigDecimal的回数据,这样您就可以为BigDecimal创建一个包装类来完成您想做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5721594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档