2 reasonat
Спасибо за ссылки. Для чистоты знания пришлось все таки провести эксперимент. Вот его суть:
1. с помощью простейшего кода создаем набор координат точек
Код: Выделить всё
dim i
for i=0 to 100 step 1/300
WScript.echo(cstr(i) & ";" & cstr(i+0.0005))
next
2. загружаем это в MI как текстовый файл
3. создаем две таблицы test1000.tab и test1001.tab со следующим набором полей:
Код: Выделить всё
Fields 7
ID1 Integer ;
X Float ;
Y Float ;
cX1 Char (32) ;
cY1 Char (32) ;
cX2 Char (32) ;
cY2 Char (32) ;
4. загружаем в таблицы текстовые данные в поля cX1,cY1 - соответственно. Это будет эталон для сравнения.
В поля X,Y загружаем те же данные с использование стандартной конвертации CHAR -> Float
5. В двух таблиц создаем две практически одинаковые системы координат:
test1000:: CoordSys NonEarth Units "m" Bounds (-1000000, -1000000) (1000000, 1000000)
test1000:: CoordSys NonEarth Units "m" Bounds (-1000500, -1000500) (1000500, 1000500)
- существенно, границы обеих что обе меньше, чем (2**31-1) метров
- предполагаемая
точность 1-ой = 1 мм, 2-ой = 1,005 мм
6. кодируем координаты в точки с использованием их системы координат
7. вычисляем координаты полученных точек командой
Код: Выделить всё
set coordsys table test1000
Update test1000 Set cX2 = Format$(CentroidX(obj),"#0.##########"),cY2 = Format$(CentroidY(obj),"#0.##########")
8. сравниваем результаты в двух таблицах - атрибутивные данные и размещение точек визуально

- Clipboard01.jpg (3.47 КБ) 22472 просмотра
9. проверяем
точность данных хранимых в поле с типом float через запрос
Код: Выделить всё
select x,Format$(x,"#0.##########") from test1000 into q1000
browse * from q1000
---
выводы:
1. на примере 9. видно, что число выводимое по умолчанию содержит меньше разрядов, чем то же самое число принудительно развернутое до максимального числа знаков. особенно хорошо это видно ближе к 100
2. ДА, размерность сетки внутренних координат MAPINFO составляет 2 миллиарда, а не (2**31-1).
3. на системе координат с границами в 1000 км - получается
точность ровно в 1 мм, со стандартным округлением.
4. если увеличить границы на 0,5% - видимая размерность чисел - увеличится, но это увеличение за счет остатков от деления.
5.

в таблице test1001 - Самая первая точка с координатами (0;0) - НЕ будет учтена приложением Coordsys Boundaries Manager и НЕ будет выделяться на экране.