T>>А в качестве индекса все равно поиспользовать не получится... хоть double используй, хоть __int64.
LVV>Предел float 10^38 = 2^38*5^38 LVV>2^42 = 2^4*2^38 = 16*2^38 LVV>Очень даже организуешь! LVV>Или я где-то грабли не вижу?
Конечно не видите, что, вообще говоря, странно...
Распределение вещественных чисел, представляемых флоат (да и любым числом с плавающей точкой) на множестве вещественных чисел, неравномерно. Наиболее плотно числа представлены (отбросив знак) в районе единицы, далее, ближе к границам диапазона — значительно более разрежено. Т.е. далеко не все целые числа из диапазона флоата можно с точностью до +-0.5 им представить. Более того. Общее количество (вещественных) чисел, представляемых float, составляет примерно (точно я не помню) 2^25 + 1. Общее количество (вещественных) чисел, представляемых double, состоявляет 2^53 + 1, т.е. им представить 42 битное число с некоторой осторожностью можно (при этом, очевидно, от операции инкремента в виде прибавления единички к значению придется отказаться, придумав нечто другое, что не изменяло бы значения порядка, а только мантиссы). В общем — правильнее и быстрее использовать вложеный цикл на long, если компилер не поддерживает 64-х битные целые.