代码
package shiyan;
class Circle{
double r;
Circle(double d){
r=d;
}
double getPerimeter() {
return 2*3.14*r;
}
double getArea() {
return 3.14*r*r;
}
}
public class Shiyan3 {
public static void main(String []args) {
Circle c1,c2;
c1=new Circle(5);
c2=new Circle(10);
System.out.println("c1的周长为:"+c1.getPerimeter());
System.out.println("c1的面积为:"+c1.getArea());
System.out.println("c2的周长为:"+c2.getPerimeter());
System.out.println("c2的面积为:"+c2.getArea());
}
}
输出结果
java的double和float类型在操作中会丧失精度,和预期结果产生偏差
小数运算,用BigDecimal,这是业界规则;
举个例子
```c
3.14*3.14
```会出现小数为多,因为两个数的小数位是14,
```c
3.0*3.14
```就正确显示,因为这里的3.0小数点后是0,总结就是如果出现小数位和小数位运算就会出现小数位比较多,精度的问题
改成5.1和10.1以后是下面这样
然后,我上面那个问题有点乱码了,我改一下上午的问题:以c1为例,c1的周长是2x3.14x5.0,面积是3.14x5.0x5.0,两者都是传的5.0,为什么会不一样呢?将传的数据改为5.0和10.0也还这样啊,为什么呢?