看了一位老师的视频后才发现浮点数还有这么多需要注意的!!!
- 浮点数不能直接相比,不够精准;例:System.Out.println(1.1+2.2==3.3); 结果为false。解决办法:两边同时乘10。
- 任意精度的计算。例:
import java.math.BigDecimal;
import java.math.MathContext;
public class A {
public static void main(String[] args) {
//有效数字100位,任意精度
BigDecimal a = BigDecimal.valueOf(1).divide(
BigDecimal.valueOf(6),new MathContext(100));
System.out.println(a);
}
}
运行结果会保留100位, BigDecimal和MathContext的详细用法可以在API 中查找。
3.IEEE754中的5个特殊值
public class A {
public static void main(String[] args) {
double a=3.0/0;
System.out.println(a);//结果: Infinity 无穷大
System.out.println(1/a);//结果: 0.0
System.out.println(a*-1);//结果: -Infinity 无穷小
System.out.println(1/(-a));//结果: -0.0
System.out.println(a-a);//结果:NaN(不是一个数字)
}
}