Собственно, пока я опять не погрузился в свои студенческие дела, можно подумать о чём-нибудь отвлечённом. Например, вот недавно я заметил, что самые элементарные арифметические действия с floating point порождают странную погрешность во многих языках программирования. Как, я думаю, все здесь знают (и ниразу не спасибо тем, кто мне это нихуя не объяснил), это получается от того, что далеко не все рациональные числа можно записать в виде конечного флоата. Например, в десятичной системе так можно записать только числа вида n/(2^p*5^q) для целого n и неотрицательных целых p и q. Если число не имеет такую форму, то получится бесконечная (периодическая) десятичная дробь. В двоичной системе дело обстоит ещё хуже, потому что там конечным количеством цифр после запятой можно записать только n/2^p. В общем случае, в n-арной системе счисления можно записать только числа с таким делителем d, который не содержит простых множителей, которых нет в n. Так вот, у меня возник вопрос: какая система лучше всего в том смысле, что вероятность, что рандомное рациональное число можно будет записать в виде флоата без сокращений будет максимальной, и при этом не возникнет новых проблем? С одной стороны как бы понятно, что нужно взять n=2*3*...p_r произведение первых r простых чисел и чем больше r тем лучше, но если n будет слишком большим, то не возникнет ли новых проблем с вычислениями? Может есть какой-нибудь оптимум, скажем, 6?