Qubc
@Qubc
Ненавижу полисемию.

Почему pow возвращает разные значения от одинаковых float значений?

powf возвращает одинаковые float значения от одинаковых float.
pow возвращает разные double значения от одинаковых float?
#include <stdio.h>
#include <math.h>
int main ( void )	{
	float  m = 3.0, n = 54.0;
	printf ("%lf\n", pow (m,n)  );//lf C99
	printf ("%lf\n", pow (3.0,54.0) );//float
	printf ("%lf\n", powf (m,n)  );
	printf ("%lf\n", powf (3.0,54.0) );//float
}	
// 58149737003040055000000000.000000
// 58149737003040064000000000.000000
// 58149735907158878000000000.000000
// 58149735907158878000000000.000000
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
У меня на свежайшем MinGW (Си, режим C99) не получилось повторить, а погрешность на пределе double — так что подозрение на runtime-библиотеку и управляющее слово сопроцессора (x87 control word).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы