import java.math.BigDecimal;
public class DoubleTest {
public static void main(String args[]) {
BigDecimal d1 = BigDecimal.valueOf(2.4);
BigDecimal d2 = BigDecimal.valueOf(0.6);
BigDecimal d3 = d1.add(d2.negate());
System.out.println(d3.toString());
}
}
Странное поведение чисел....
Всем привет! Делаю калькулятор(такой же как в Win XP), так вот когда хочу например штобы решило выражение (2.4 - 0.6) он выводит мне 1,799999998, как можно исправить эту проблему. В поисках решения объявлял переменные как double, так и BigDecimal, не хочет работать(такая же фигня выходит), с округлением правда работает, но округление здесь не совсем то што хотелось бы, просто когда я ввожу потом например (2,45- 0.6) он должен выводить 1.85, а он выводит 1.9 ну или 1.8, смотря в какую сторону окрутлять, вот поэтому округление не вариант. Может кто сталкивался с такой проблемой, подскажите
java.text.MessageFormat.format("{0}", x)
Я тоже замечал похожее поведение, правда там систему диф уравнений решал, и это не особо беспокоило. Но BigDecimal прекрасно работает:
Цитата: Artyom2010
Я тоже замечал похожее поведение, правда там систему диф уравнений решал, и это не особо беспокоило. Но BigDecimal прекрасно работает:
Выдает 1.8 ровно
Код:
import java.math.BigDecimal;
public class DoubleTest {
public static void main(String args[]) {
BigDecimal d1 = BigDecimal.valueOf(2.4);
BigDecimal d2 = BigDecimal.valueOf(0.6);
BigDecimal d3 = d1.add(d2.negate());
System.out.println(d3.toString());
}
}
public class DoubleTest {
public static void main(String args[]) {
BigDecimal d1 = BigDecimal.valueOf(2.4);
BigDecimal d2 = BigDecimal.valueOf(0.6);
BigDecimal d3 = d1.add(d2.negate());
System.out.println(d3.toString());
}
}
Выдает 1.8 ровно
ураааааааааа!! спс вам, вроде работает я тоже использовал BigDecimal, но только так
Код:
public static void main(String[] args) {
// TODO code application logic here
BigDecimal x = new BigDecimal(2.4);
BigDecimal x1 = new BigDecimal(0.6);
BigDecimal x2 = x.subtract(x1);
System.out.println(x2);
}
// TODO code application logic here
BigDecimal x = new BigDecimal(2.4);
BigDecimal x1 = new BigDecimal(0.6);
BigDecimal x2 = x.subtract(x1);
System.out.println(x2);
}
не знаю почему он не хотел работать, может изза оператора new....