据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库。
但这会被认为是最佳做法吗? 怎么样支持几个平台 和架构?
再见
答案 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
这是迄今为止唯一的界面吗?