Java中更高精度的双精度和三角函数

时间:2011-08-08 09:13:23

标签: java floating-point

据IEEE称,存在以下双打:

                Mantissa   Exponent  
double 64bit:       52 bit     11 bit  
double 80bit:       64 bit     15 bit  

在Java中只有64位双倍可以直接使用 存储在实例变量中。我想要的 无论什么原因使用定义的80位浮点数 以上是Java。我对全套感兴趣 算术函数,I / O和三角 功能。我怎么能这样做?

当然可以做一些事情 以下几行:

public class DoubleExt {
    private long mantissa;
    private short exponent;
}

然后创建一个与之接口的包 一些用于80位浮点数的已知C库。

但这会被认为是最佳做法吗? 怎么样支持几个平台 和架构?

再见

3 个答案:

答案 0 :(得分:2)

我很确定原始人不会让你到那里,但是BigDecimal类和它一样好(除了三角函数之外的所有东西)。

但是,对于三角函数,您必须使用外部库,例如APFloat(请参阅this previous question)。

答案 1 :(得分:0)

也许BigDecimal是适合你的方式。但我相信它并没有提供全套的数学函数。

http://download.oracle.com/javase/1,5.0/docs/api/java/math/BigDecimal.html

答案 2 :(得分:0)

这个问题已经有5年了。是时候四处看看了 是否有一些新的候选人,也许是吸取灵感 来自其他语言。

在Racket中我们找到一个BigFloat数据类型:
https://docs.racket-lang.org/math/bigfloat.html

底层库是GNU MPFR,启动了Java接口:
https://github.com/kframework/mpfr-java

这是迄今为止唯一的界面吗?