Найдено результатов: 1

Глюк калькулятора Google, может ли float vs double быть возможной причиной?

Я сделал это просто для удовольствия (так что, не совсем вопрос, я вижу, что downmodding уже происходит), но вместо новообретенной неспособности Google правильно делать математику (проверьте это! согласно google 500,000,000,000,002-500,000,000,000,001 = 0), я решил, что попробую следующее в C, чтобы запустить небольшую теорию.

int main()
{
   char* a = "399999999999999";
   char* b = "399999999999998";

   float da = atof(a);
   float db = atof(b);

   printf("%s - %s = %f\n", a, b, da-db);

   a = "500000000000002";
   b = "500000000000001";
   da = atof(a);
   db = atof(b);
   printf("%s - %s = %f\n", a, b, da-db);
}

При запуске этой программы вы получаете следующее

   399999999999999 - 399999999999998 = 0.000000
   500000000000002 - 500000000000001 = 0.000000

Казалось бы, Google использует простую 32-битную плавающую точность (ошибка здесь), Если вы переключите float на double в приведенном выше коде, вы исправите проблему! Может быть, это оно и есть?

/mp

c   math   google-search    

468   7   04:40, 13th August, 2020