Что делать, если результат вычислений double дает лишнюю дробную часть?
Что делать, если результат вычислений double дает лишнюю дробную часть? Скажем должно получится число 2, а получается 1.999999996.
public class ComplexNumberTest{
public static void main(String[] args) {
ComplexNumber cn1 = new ComplexNumber(-5.1, 8.3);
ComplexNumber cn2 = new ComplexNumber(-3.1, 4.8);
System.out.println(cn1.sum(cn2));
System.out.println(cn1.subtraction(cn2));
System.out.println(cn1.multiplication(cn2));
System.out.println(cn1.module());
}
}
class ComplexNumber{
private double realPart;
private double imaginaryPart;
public ComplexNumber(){}
public ComplexNumber(double r){
this.realPart = r;
}
public ComplexNumber(double r, double i){
this.realPart = r;
this.imaginaryPart = i;
}
public double getRealPart(){
return this.realPart;
}
public void setRealPart(double r){
this.realPart = r;
}
public double getImaginaryPart(){
return this.imaginaryPart;
}
public void setImaginaryPart(double i){
this.imaginaryPart = i;
}
public ComplexNumber sum(ComplexNumber that){
ComplexNumber result = new ComplexNumber();
result.setRealPart(this.getRealPart() + that.getRealPart());
result.setImaginaryPart(this.getImaginaryPart() + that.getImaginaryPart());
return result;
}
public ComplexNumber subtraction(ComplexNumber that){
ComplexNumber result = new ComplexNumber();
result.setRealPart(this.getRealPart() - that.getRealPart());
result.setImaginaryPart(this.getImaginaryPart() - that.getImaginaryPart());
return result;
}
public ComplexNumber multiplication(ComplexNumber that){
ComplexNumber result = new ComplexNumber();
result.setRealPart((this.getRealPart() * that.getRealPart()) - (this.getImaginaryPart() * that.getImaginaryPart()));
result.setImaginaryPart((this.getRealPart() * that.getImaginaryPart()) + (that.getRealPart() * this.getImaginaryPart()));
return result;
}
public Double module(){
Double result = new Double(0);
result = Math.sqrt((this.getRealPart() * this.getRealPart()) + (this.getImaginaryPart() * this.getImaginaryPart()));
// Double tmp = this.getRealPart() > 0 ? this.getRealPart() : -this.getRealPart();
// result.setRealPart(tmp);
return result;
}
@Override
public String toString(){
return "{ " + this.getRealPart() + ", " + this.getImaginaryPart() + "}";
}
}