Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 21.05.2018, 20:53   #1
Javoh
Новичок
 
Регистрация: 21.05.2018
Сообщений: 4
Репутация: 10
По умолчанию Почему выводит разные результаты?

{
// Java
double num = 0.0, num1 = 2.0, num2 = 2.1, num3 = 2.3;
num = num1 + num2 + num3;
System.out.println(num);
}


{
// C++
double num = 0.0, num1 = 2.0, num2 = 2.1, num3 = 2.3;
num = num1 + num2 + num3;
cout << num << endl;
}


Почему выводится разные результаты??
Почему Java выводит неправленый результат??
Javoh вне форума   Ответить с цитированием
Старый 21.05.2018, 20:55   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,117
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Какие результаты-то?
Alex11223 вне форума   Ответить с цитированием
Старый 21.05.2018, 21:33   #3
Javoh
Новичок
 
Регистрация: 21.05.2018
Сообщений: 4
Репутация: 10
По умолчанию

В Java: 6.3999999995
В C++: 6.4
Javoh вне форума   Ответить с цитированием
Старый 21.05.2018, 21:46   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,117
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Все ж правильно. Никто не обещал точность double до 10005000 знаков. В С++ так же бывает.

Поэтому например нельзя просто сравнивать вещественные числа (по крайней мере после операций над ними) как a == b и т.п.
Alex11223 вне форума   Ответить с цитированием
Старый 21.05.2018, 21:52   #5
Javoh
Новичок
 
Регистрация: 21.05.2018
Сообщений: 4
Репутация: 10
По умолчанию

но С++ правильно выдоит ответ, а Java нет. Как можно это исправить ?
Javoh вне форума   Ответить с цитированием
Старый 21.05.2018, 21:58   #6
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,482
Репутация: 2073
По умолчанию

Код:

System.out.println(String.format("%.6f", num));

__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 21.05.2018, 22:06   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,495
Репутация: 5308
По умолчанию

Код:

System.out.println(round(num, 2));

Добавлено
совет с форматированным выводом от p51x лучше.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 21.05.2018, 22:11   #8
Javoh
Новичок
 
Регистрация: 21.05.2018
Сообщений: 4
Репутация: 10
По умолчанию

Спасибо, хорошо

как это?

что такое round?

Последний раз редактировалось Alex11223; 21.05.2018 в 22:52.
Javoh вне форума   Ответить с цитированием
Старый 21.05.2018, 22:52   #9
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,117
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Округление.
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста! СЧЕТЕСЛИМН и фильтр дают разные результаты Ppaa Microsoft Office Excel 2 03.08.2015 16:10
(с++) float и double. Разные результаты. Uefa Помощь студентам 4 20.05.2014 12:50
Идентичные функции выдают разные результаты Cannibal Помощь студентам 6 21.04.2011 18:29
Программа на цикле неверно выводит результаты nox7 Паскаль 4 26.09.2010 19:28
Разные компиляторы - разные результаты Кипящий чайник Общие вопросы C/C++ 3 16.07.2010 14:54


08:22.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru