К сожалению, даже ваш «расточительный» код неверен. EPSILON - это наименьшее значение, которое можно добавить в 1.0 и изменить его значение. Значение 1.0 очень важно - при добавлении в EPSILON большее число не изменяется. Теперь вы можете масштабировать это значение до чисел, которые вы сравниваете, чтобы определить, являются ли они разными или нет. Правильное выражение для сравнения двух удвоений:
if (fabs(a - b) <= DBL_EPSILON * fmax(fabs(a), fabs(b)))
{
// ...
}
Это минимально. В общем, однако, вы хотели бы учитывать шум в ваших расчетах и игнорировать несколько наименее значимых бит, поэтому более реалистичное сравнение будет выглядеть следующим образом:
if (fabs(a - b) <= 16 * DBL_EPSILON * fmax(fabs(a), fabs(b)))
{
// ...
}
Если эффективность сравнения очень важна вам и вы знаете диапазон своих значений, тогда вместо этого вы должны использовать числа с фиксированной запятой.
Когда мне приходилось иметь дело с таблицами других людей с пробелами, это работало:
use `student registration`;
По крайней мере, это было бы ваше.
Вы должны попробовать использовать обратные тики ("` "), чтобы указать ваше имя базы данных. Вообще говоря, вероятно, лучше использовать соглашение об именах для устранения пробела, например
USE `StudentRegistration`;
или
USE `student_registration`;
У вас есть два варианта.
1 Включение имени базы данных в обратные или одинарные кавычки.
blockquote>USE `student registration`; USE 'student registration';
2 Побег над символом пробела.
blockquote>
USE student\ registration;
Как ни странно, это создает.
ОШИБКА: Неизвестная команда '\'.
blockquote>Но все равно изменяет базу данных.
Используйте двойные кавычки вместо одиночных, двойных кавычек, сработанных для меня:
USE "student registration";
Чтобы получить эту работу, вы должны использовать квадратные скобки:
Use [student registration]