Вопрос № 171572: Здравствуйте. Имеется простая программа на С++, которая некорректно работает, если все переменные double, но нормально работает, когда поменял переменные на Long. Прошу объяснить, почему. Программа находит первое простое число, которое ...
Вопрос № 171572:
Здравствуйте.
Имеется простая программа на С++, которая некорректно работает, если все переменные double, но нормально работает, когда поменял переменные на Long. Прошу объяснить, почему.
Программа находит первое простое число, которое больше 1 000 000 000 (1 млрд).
Значения переменных не превышали 1 000 000 007, однако с переменной double программа не работала.
Код обоих программ в приложение. 1 - исправная. 2 - с ошибкой.
Отвечает Micren, Бакалавр :
Здравствуйте, Иванов Андрей Владимирович. У меня оба варианта работают одинаково. Просто для вывода используйте оператор:
Код:
cout<<fixed<< number << " is a prime number";
Т.к. по умолчанию точность вывода для действительных чисел
составляет 6 знаков. И не разумно использовать действительную арифметику там, где логичнее использовать целочисленную. Это вредно сказывается на производительности и следует учитывать конечную точность действительных операций и то, что различные компиляторы могут по разному оптимизировать операции. Из за всего этого могут возникать различные нежелательные эффекты.
Ответ отправил: Micren, Бакалавр
Ответ отправлен: 24.08.2009, 14:09
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 253502
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.