Я работаю с матрицами в C++, а тип элементов - двойной. Мой предел для матричных величин составляет 10 000. Я хочу знать, что такое логическое значение, заданное как ограничение для элементов, учитывая тот факт, что я выполняю на них много действий суммирования и умножения. Я хочу, чтобы это число было как можно выше, но без проблем с бесконечным числом.лучший двойной предел значения в C++
ответ
Вы всегда можете использовать std::numeric_limits
.
Например:
#include <limits>
#include <iostream>
int main()
{
std::cout << "float\t"
<< std::numeric_limits<float>::lowest() << '\t'
<< std::numeric_limits<float>::max() << '\n';
std::cout << "double\t"
<< std::numeric_limits<double>::lowest() << '\t'
<< std::numeric_limits<double>::max() << '\n';
}
Как это отвечает на вопрос оп? – George
@George Errr ... как, она просит лимит, и Мохамед предоставляет один? (По общему признанию, вопрос не совсем ясен - другие люди, похоже, думают, что она просит лимитировать индексы, а не ценности. Но, учитывая, что она делает «много сумм и умножений» на них и говорит о бесконечных результатах, я думаю, она спрашивает для пределов значения элемента.) –
Вопрос «Я хочу знать, что такое логическое значение для установки как предела для элементов», а элементы «double», поэтому это должно быть то, что максимальный и минимальный пределы «double» на данный машина. –
Диапазон двойник
1.7976931348623158e+308
Позволяет сказать, максимальное значение элемента в качестве X; для умножения максимального ответ будет
X*X + X*X + X*X .....10,000 times(maximum row and column count)
10000*X*X
Поэтому `
1.7976931348623158e+308 = 10000*X*X
1.7976931348623158e+304 = X*X
X ~ 1.7976931348623158e+150
Но вы потеряете точность.
Это значение, если вы собираетесь умножить один раз.
Почему, по-вашему, вам нужно «установить лимит для элементов»? –
Я имею в виду, что вы уже ограничены своей системной архитектурой для индексирования в вашу матрицу. Разве этого недостаточно? – mascoj
Я получаю бесконечность в результате матричного продукта. – dieKoderin