У меня возникла проблема с моим кодом. Поскольку я пытаюсь сравнить две переменные с разными значениями, вызывая метод isEqual(). Но это дало мне результат. Может ли кто-то определить проблему? Мой класс с плавающей точкойЗначение предыдущей переменной становится значением текущей переменной
import io.*;
//Class FloatingPoint
public class FloatingPoint
{
//Constant
public static final double MINPRECISION = 0.00000001;
//Variable
private static double precision;
//Default constructor
public FloatingPoint()
{
precision = MINPRECISION;
}
//Unsure if need a alternatve
//Alternative constructor
public FloatingPoint(double value)
{
if((value < 0.0) || (value > 1.0))
{
throw new IllegalArgumentException("Invalid reliability!");
}
setPrecision(value);
}
//Copy Constructor
public FloatingPoint(FloatingPoint num)
{
precision = num.getPrecision();
}
//getPrecision
public double getPrecision()
{
return precision;
}
//isEqual
public boolean isEqual(FloatingPoint num)
{
return (Math.abs(precision - num.getPrecision()) < MINPRECISION);
}
//setPrecision
public static void setPrecision(double value)
{
precision = value;
}
}
И это мой главный класс
import java.io.*;
public class TestFloatingPoint
{
public static void main(String [] args)
{
FloatingPoint f1, f2;
f1= new FloatingPoint(0.2);
System.out.print(f1.toString());
f2=new FloatingPoint(1.0);
System.out.print(f2.toString());
System.out.print(f1.toString());
System.out.print(f1.isEqual(f2));
System.exit(0);
}
}
Вы сохраняете значение в 'precision' и не имеете поля' value' в своем классе ... это совсем не ясно, каково ваше намерение. –
'private static double precision' - предлагаю вам читать статические переменные. –
Привет, но если мне нужно использовать static для переменной точности, есть ли другой способ решения? – Auric