Jul 28, 2012 22:27
Задачка для младших инженеров-программистов электронно-вычислительных машин.
C:
#include
#include
int main()
{
printf("%d\n", (pow(43, 10) == 21611482313284249ll));
return 0;
}
Python:
import math
print(math.pow(43, 10) == 21611482313284249)
Вопрос: что выведется и почему?
нечеловеческие языки,
задачка
Leave a comment
А тут даже константу написать - надо как минимум лезть в мануал по каждому из языков.
И сравнивать плавающие операцией == - ну вааащщщщщще.
В моей личной практике была отладка кода, в котором накапливающаяся ошибка округления в тупо написанном алгоритме с double float давала в сочетании с вычитанием больших чисел эффект "0=1" на всего лишь сотне поступивших в программу результатов измерения.
Reply
Пишущие на JavaScript, AWK, Lua, ... только так и сравнивают :)
Сравнивать с точностью до MY_EPSION?.. Сорри, что бы сравнить 43**10 и math.pow(43, 10) EPSILON должен быть не меньше чем 1.0 :)
Reply
У этой истории есть и мораль - не используйте плавучку в криптографии.
Reply
... Sing, Maglor the Stranger, a ballade for me ...
Reply
Reply
Leave a comment