Java中的数字基本运算和精度问题
?
?
?// 拿int举例,其他类似IntRange intRange = new IntRange(100, 200);// 创建一个范围intRange.containsDouble(111.1);// 是否包含指定数字int[] range = intRange.toArray();// 获取范围内的intintRange.getMaximumDouble();// 获取最大值,转换成doubleintRange.getMinimumDouble();// 获取最小值,转换成double??
4. 处理随机数的JVMRandom和RandomUtils类。这个也比较简单,看看api就可以,获取随机数时比较方便而已。
?
commons-math工具包是apache 上一个轻量级自容器的数学和统计计算方法包,包含大多数常用的数值算法,这个进行专业数学处理时会非常方便。
如:计算方法,方差和一组数的概率统计问题;
一套拟合曲线的数据点应用线性回归问题;
插值问题(可能包括线性、样条等插值);
用来进行参数拟合的最小二乘方法;
求解方程组值问题(例如,求方程组的根);
解决系统的线性方程组;
求解常微分方程;
求最小值问题的方法;
利用Commons Math包产生指定要求的随机数;
生成随机抽样,数据集;
进行统计测试;
繁杂的数学函数,如组二项式系数、特殊函数(如gamma, beta functions);
个人认为这个包过于专业,如果用到了,再查询不迟,知道这个包能解决问题就行。
当然,这个包很专业,但是不代表只能解决专业数学问题,处理简单的计算也是很方便的。
?
总结:普通的计算最好使用BigDecimal类,这个类可以非常精确的计算出结果,而且你可以完全控制精度,不用额外其他操作,而且与基本类型转换都非常方便。
?
?