‘壹’ 关于java单精度与双精度的问题
单简悄铅精度和双精度的区别就是,双精度要比单精度所存储的位数要多,至于说3.14师双精度,是因为Java中,默认的小数都是double类型,也就算双精度的,如果要定义单精度的话,那就要在小数的后面加上一个f或者F,即 double d = 3.14; float f = 3.14f; 一定要注意后面有没有“f”运蠢和“F”啊,这个初学的时候,经常会考拦好到。楼上说的,是对,但是,他那样写,就一定会报错。记住,单精度的变量定义,一定要在值的后面加上标识。
‘贰’ java中如何实现N个浮点数相加并确保其精确度
用BigDecimal类来计算,先用加法计算,再用结果除以1,通过devide除法方法来确认保留几位小数,如下例:
importjava.math.*;
publicclassDemo
{
publicstaticvoidmain(String[]args){
BigDecimalbig1=newBigDecimal(123456.23456);
BigDecimalbig2=newBigDecimal(123.456);
BigDecimalbig3=newBigDecimal(1);
BigDecimaltemp=big1.add(big2);
System.out.println(big1.divide(big3,5,BigDecimal.ROUND_HALF_UP));//保留5位小数,返回bigDecimal
}
}