Хорошо, нет e go, может быть, что-то смешное в программе, но G CC и Clang компилируют ее нормально и запускают так, как задумано в Ubuntu 20.04 и MacOS 10.14. Visual Studio 2013 на Win 7? Это отдельная история.
#include <stdio.h>
#include <math.h>
int main()
{ double num1, num2, result;
printf("\nEnter numbers : ");
scanf("%lf %lf", &num1, &num2);
result = pow(num1,num2);
printf("\n%s %lf\n","Result = ",result);
}
Круто? На Mac / Linux Когда я пробую 128 ^ 128, я получаю точный ответ 528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336.000000
При компиляции без ошибок или предупреждений в VS2013 и запуске на том же компьютере (Win7Pro) я получаю:
52829453113566525
, за которым следует много нулей, так что ответ имеет такое же количество цифр, что и ответ выше.
Я могу проверить тот же код, я использую тот же. c файла на этих платформах, единственные переменные, которые я вижу, - это компилятор и ОС. Есть ли что-нибудь, что может сделать такой маленький разработчик, как я, чтобы исправить беспорядок Microsoft (как кажется) ??
Примечание: все операционные системы 64-битные.
Изменить: это минимальный воспроизводимый пример из более крупного проекта MathHack, который доступен @ sites.google.com / view / mathhack Полный исходный код доступен на этом веб-сайте, хотя я сомневаюсь, что есть проблема с остальной частью код.
Редактировать 2: Снимки экрана -
Работает на MacOSX 10.14 -
https://drive.google.com/file/d/1I0T75vJAUPnbK8y-oCkl_rHSqLTvCWzv/view?usp=sharing
Не работает на Win7 SP2 -
https://drive.google.com/file/d/148EuhwYlrWRom4fIPT_wfkxdSIYya3ep/view?usp=sharing
Edit 3:
Возможно, это ошибка в реализации printf () от Microsoft. Шак. Я буду обновляться до последней версии VS, чтобы посмотреть, исправит ли это это.