Java计算中,两个很小很小的double类型数据做乘积运算,得出的结果成了NaN类型。想问一下该如何处理?

最终计算出的结果是我要用jfreechart画曲线图用的纵轴值,若直接用计算出的NaN结果代入画图的话,画出的图根本没有曲线显示。无论我怎么放大也看不到曲线,恳请高手指点该如何处理这个问题。
能把NaN类型转换成double类型吗?

double约有14-16个十进制有效数字。是数学意义的有效数字。
绘图很少需要精度大于这个范围的。连3d坐标系都只用单精度float。

所以,出现NaN(不是数)一般不是精度不够,而是算术错误。比如除0,负数开平方等等
检查算法排除这个错误,也可以侦测这个异常,另设一种处理
double r=...;
if(r==Double.NaN) {
r=转换处理 或者 提示错误
}追问

如果不是算术错误,确实是精度不够,那样该怎样做“转换处理”呢,怎么转换成double?

追答

可以计算一个参考值,在计算后比对,误差大就是精度不够。

一般不是天文级的应用都够。

出现精度不够情况就要,改用BigDecimal类的高精度十进制实数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-09
用java的java.math.BigDecimal类型,多小数据都可以。
相似回答