2017-01-25 11 views
-2

У меня проблема, когда я умножаю две «двойные» переменные в моей программе, результат, который я получаю, равен нулю. Зачем?Результат умножения двух двойных переменных равен нулю, почему?

, например:

1.0E-321 * 5.321777473676208E-4 = 0.0 

как предотвратить результат не равен нулю ?.

+2

'double' имеет [минимальное значение] (https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#MIN_VALUE). Если вы попытаетесь сохранить число, меньшее этого, вы получите [underflow] (https://en.wikipedia.org/wiki/Arithmetic_underflow). – khelwood

+0

есть ли решение? –

+0

Используйте 'BigDecimal'. – Kayaman

ответ

5

double имеет minimum value. Если вы попытаетесь сохранить число, меньшее этого, вы получите underflow.

Вы можете использовать класс BigDecimal.

BigDecimal a = new BigDecimal("1.0E-321"); 
BigDecimal b = new BigDecimal("5.321777473676208E-4"); 
System.out.println(a.multiply(b)); 
-2

Double имеет максимум и значение мизинца (где-то около -1.7 * 10^308) и так как Уры calulation имеет результат, который приближается к 5.3 E325 он показывает ошибку и можно попробовать multipying числа первыхов, а затем экспоненты, например, 1 * 5.32177, а затем просто добавьте мощности (-321 + (- 4)), таким образом, вы можете получить ур ответ. :)

 Смежные вопросы

  • Нет связанных вопросов^_^