powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обрезание numeric числа, начиная с 17-го знака автоматически в FP6и8
5 сообщений из 5, страница 1 из 1
обрезание numeric числа, начиная с 17-го знака автоматически в FP6и8
    #32806715
vitalenergy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть поле в таблице типа numeric 20,0
когда вводим в него число с количеством цифр большим 16 цифр, автоматически после ввода цифры после
win98 : 16-го знака заменяются нулями
winxp: 14-го знака заменяются нулями
Подозрение на настройки fox'a или виндов. Но что за настройки?
Помогите пожалуйста
...
Рейтинг: 0 / 0
обрезание numeric числа, начиная с 17-го знака автоматически в FP6и8
    #32806734
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точность расчета
Прежде чем говорить собственно о типах данных следует обратить внимание на точность расчета в FoxPro. В системных ограничениях FoxPro указано, что точность расчета ограничена 16 значащими цифрами.

Значащие цифры - это все цифры числа, считая слева направо, исключая ведущие и завершающие нули (если есть), но включая цифры после символа разделителя целой и дробной части. Для чисел от 0 до 1, значащие цифры - это все цифры, начиная с нуля перед символом разделителем целой и дробной части, но исключая завершающие нули (если есть)

Например, у числа

00010203.4050600

есть 10 значащих цифр, начиная с цифры 1 и заканчивая цифрой 6. А у числа

0.004050600

есть 8 значащих цифр, начиная с цифры 0 перед точкой и заканчивая цифрой 6.

Опираясь на собственный опыт работы с FoxPro, могу сказать, что 16 - это не точность расчета, а просто количество знаков, с которыми работает FoxPro при математических расчетах. Между этими понятиями есть разница. Более того, судя по всему, на точность расчета могут оказывать влияние какие-то системные ограничения как самой операционной системы, так и "железа". Выполните такую проверку

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE CURSOR test (test N( 20 ))
INSERT INTO test VALUES ( 1234567890123456 )
INSERT INTO test VALUES ( 12345678901234567 )
INSERT INTO test VALUES ( 123456789012345678 )
INSERT INTO test VALUES ( 1234567890123456789 )
INSERT INTO test VALUES ( 12345678901234567890 )
BROWSE NOWAIT


На разных компьютерах этот простой тест может давать несколько отличные результаты. При наихудшем раскладе, реально окажутся заполненными только первые 14 разрядов, а остальные разряды окажутся заполненными нулями. При наилучшем раскладе, реально заполненными будут первые 16 разрядов, а остальные - также заполнены нулями.

Таким образом, применительно к FoxPro можно говорить о том, что доверять можно только первым 14 значащим цифрам. Еще 2 цифры будут содержать сомнительные (но близкие к реальным) данные. А вот все значащие цифры, начиная с 17, будут недостоверны. Т.е. будут заполнены случайными данными.
...
Рейтинг: 0 / 0
обрезание numeric числа, начиная с 17-го знака автоматически в FP6и8
    #32806782
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вся арифметика для данных типа N в Fox реализована для скорости через числа с плавающей точкой (аналог double для C++, Delphi), т.к для этого формата существует аппаратная поддержка (команды процессора). Описание формата можно найти в литературе. Кратко: число представлено ввиде двоичной нормализованной мантиссы и двоичной экспоненты.
Число двоичных разрядов мантиссы и определяет число значащих десятичных цифр - это и дает 15-17 значащих десятичных цифр не больше. По тойже причине в ячейке Excel вы будете иметь теже проблемы
...
Рейтинг: 0 / 0
обрезание numeric числа, начиная с 17-го знака автоматически в FP6и8
    #32806786
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настройками тут не обойтись - меняйте тип данных.
...
Рейтинг: 0 / 0
обрезание numeric числа, начиная с 17-го знака автоматически в FP6и8
    #32806881
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На www.universalthread.com валялся ActiveX для работы с большими числами... Может он поможет...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обрезание numeric числа, начиная с 17-го знака автоматически в FP6и8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]