Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Странное поведение чисел....

61K
29 ноября 2010 года
sult9191
7 / / 09.11.2010
Всем привет! Делаю калькулятор(такой же как в Win XP), так вот когда хочу например штобы решило выражение (2.4 - 0.6) он выводит мне 1,799999998, как можно исправить эту проблему. В поисках решения объявлял переменные как double, так и BigDecimal, не хочет работать(такая же фигня выходит), с округлением правда работает, но округление здесь не совсем то што хотелось бы, просто когда я ввожу потом например (2,45- 0.6) он должен выводить 1.85, а он выводит 1.9 ну или 1.8, смотря в какую сторону окрутлять, вот поэтому округление не вариант. Может кто сталкивался с такой проблемой, подскажите
1.8K
29 ноября 2010 года
LM(AL/M)
332 / / 20.12.2005
java.text.MessageFormat.format("{0}", x)
62K
29 ноября 2010 года
Artyom2010
8 / / 02.09.2010
Я тоже замечал похожее поведение, правда там систему диф уравнений решал, и это не особо беспокоило. Но BigDecimal прекрасно работает:
Код:
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());
    }
}

Выдает 1.8 ровно
61K
30 ноября 2010 года
sult9191
7 / / 09.11.2010
Цитата: Artyom2010
Я тоже замечал похожее поведение, правда там систему диф уравнений решал, и это не особо беспокоило. Но BigDecimal прекрасно работает:
Код:
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());
    }
}

Выдает 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);
    }

не знаю почему он не хотел работать, может изза оператора new....
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог