Меня интересует следующее: у меня есть метод, который принимает число с плавающей запятой в качестве входных данных и возвращает число с плавающей запятой после некоторых вычислений. Вычисления могут включать что угодно, например, сложение, деление, логарифмы, степени и так далее. При этом промежуточный результат необходимо сохранять несколько раз. Что-то такое безумное:
float performSomeComputations(float value)
{
// addition, substraction, logarithms, multiplication, etcetera
float a = value * 12.0;
float b = math.pow(a, 34.0);
float c = math.log10(b + value - 567);
return a + b + c;
}
Мой вопрос: имеет ли значение, как вы храните промежуточные результаты? т.е. как float
или как double
? Предположим, что промежуточные значения не превышают минимальное и/или максимальное значение, тогда очевидно будет разница. Но будет ли возвращаемое значение более точным, если используются типы double
, или вы всегда будете получать один и тот же ответ после того, как он, наконец, вернется к float
? И возможно ли, что ответ может варьироваться в зависимости от языка программирования?