Как умножить 2 числа, которые больше максимального предела i.e 1.89731e+4932
из long double
с использованием C++/C, например. 2.79654E+25678
и 3.89574e+35890
...умножить на 2 числа, которые больше максимального предела длинного двойного
-8
A
ответ
2
Там вы две возможности (C# примеры):
Вы можете использовать BigInteger (это, кажется неэффективным в самом вашем случае, но удобная с большим числом точности)
BigInteger a = 279654 * BigInteger.Pow(10, 25678 - 5); // <- 2.79654E25678 = 279654E25678 * 1E-5
BigInteger b = 389574 * BigInteger.Pow(10, 35890 - 5); // <- 3.89574E35890 = 389574E35890 * 1E-5
BigInteger result = a * b;
Вы можете управлять мантисс и exponentas separatedly:
Double mantissaA = 2.79654;
int exponentA = 25678;
Double mantissaB = 3.89574;
int exponentB = 35890;
Double mantissaResult = mantissaA * mantissaB;
int exponentResult = exponentA + exponentB;
// Let's adjust mantissaResult, it should be in [1..10) (10 is not included) range
if ((mantissaResult >= 10) || (mantissaResult <= -10)) {
mantissaResult /= 10.0
exponentResult += 1;
}
else if (((mantissaResult < 1) && (mantissaResult > 0)) || ((mantissaResult > -1) && (mantissaResult < 0))) {
mantissaResult *= 10.0
exponentResult -= 1;
}
// Let's output the result
String result = mantissaResult.ToString() + "E+" + exponentResult.ToString();
PS Часто в случае умножений удобнее использовать логарифмы и дополнения:
A * B -> Log(A) + Log(B)
+0
@harold: Спасибо за улучшение; Я редактировал код, чтобы добавить корректировку мантиссы –
Смежные вопросы
- 1. Изменение предела максимального числа pthreads приложением
- 2. Использование длинного двойного
- 3. Имя объекта содержит больше максимального числа префиксов. Максимум 2
- 4. Какой тип использовать, когда длинного двойного недостаточно?
- 5. Highcharts x axis показывает числа после максимального предела
- 6. Представление длинного двойного значения
- 7. JQuery Infinite Scroll - «загрузить больше» после достижения максимального предела страницы
- 8. Использование boost для (псевдо) случайного числа генератора длинного двойного
- 9. Способ вывода больше максимального предела символов в msgbox?
- 10. Как умножить числа на терабайт?
- 11. Как избежать максимального предела соединения?
- 12. Mosquitto увеличение максимального предела подключения
- 13. Разбор длинного/двойного/плавающего числа при форсировании десятичного разделителя
- 14. Plain C++/Как умножить целые числа больше, чем uint64?
- 15. Получение двойного числа от числа
- 16. Есть ли замена длинного двойного в java?
- 17. scanf GCC для длинного двойного
- 18. Использование длинного двойного или просто двойного для вычисления pi?
- 19. умножить десятичные числа на PHP
- 20. Предоставление максимального числа на график
- 21. Каков диапазон длинного двойного C++
- 22. Умножить два нечетких числа
- 23. Цель максимального числа в php & mysql
- 24. Неопределенное поведение с использованием длинного двойного, но не двойного
- 25. сопоставление максимального числа списков
- 26. Умножить цифры числа, используя рекурсию
- 27. Как я могу получить потолок длинного двойного?
- 28. Имя объекта содержит больше максимального числа префиксов. Максимум 3
- 29. умножить четные числа, добавить нечетные числа
- 30. Преобразование длинного двойного двойного с округлением вверх (или вниз)
где ваша попытка ?? –
Я не могу понять, как это сделать .. это вопрос о назначении и плохое решение для него – rajat
заданий следует пытаться ... Они выдаются по какой-то причине. –