#include <iostream>
#include <math.h>
#include <iomanip>
int main () {
std::cout << std::setprecision(20);
std::cout << std::endl;
std::cout << "Данная программа работает с формулой Лоренца для движения с постоянной скоростью." << std::endl << std::endl;
std::cout << "Что вы хотите вычислить?" << std::endl;
std::cout << "3 - скорость движущегося объекта" << std::endl;
std::cout << "Ответ: ";
int answer;
std::cin >> answer;
const int c = 299792458; // Скорость света - константа
double V; // Скорость движущегося объекта
double dt; // Время, пройденное для наблюдателя
double dt0 ; // Время, пройденное для движущегося
if (answer == 3) {
std::cout << "Введите время в секундах, пройденное для движущегося объекта: ";
std::cin >> dt0;
std::cout << "Введите время в секундах, пройденное для наблюдателя (должно быть больше чем пройденное время для движущегося объекта: ";
std::cin >> dt;
V = c * sqrt( 1 - dt0*dt0/dt/dt );
std::cout << std::endl;
std::cout << "Если объект будет двигаться со скоростью " << V << " м/с, то пока для него пройдёт " << dt0 << " сек, для наблюдателя пройдёт " << dt << " сек.";
}
std::cout << std::endl;
std::cout << std::endl;
return 0;
}
Значение переменной dt меняется само собой в конце при выводе. Например, ввожу я 1.0001, а в выводе пишет 1.0001000000000000581. Как такое возможно?