浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对符点数的运算时结果具有不可预知性
float和double只能用来作科学计算或者是工程计算,但在商业计算中要用java.math.BigDecimal
这也是在网上找的资料,参照你的写的。具体的也不是很清楚 !
- import java.math.*;
- class MathDemo
- {
- public static void main(String[] args)
- {
- printNum(3.34);
- }
- public static void printNum(double num)
- {
- double x = Math.floor(num);
- System.out.println(x);
- System.out.println(MathTest.sub(num,x));
- }
- }
- class MathTest
- {
- public static double sub(double d1,double d2)
- {
- //将d1转换为字符串类型,再转换为BigDecimal类型。
- BigDecimal b1=new BigDecimal(Double.toString(d1));
- BigDecimal b2=new BigDecimal(Double.toString(d2));
- //b1.subtract(b2) 返回一个 BigDecimal,其值为(b1-b2)
- //doubleValue() 将BigDecimal类型转换为double类型;
- return (b1.subtract(b2)).doubleValue();
- }
- }
复制代码
|