powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с INSERT и DOUBLE
4 сообщений из 4, страница 1 из 1
Проблема с INSERT и DOUBLE
    #33377909
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE cursor REPAIRTIMES (;
    ADB        VARCHAR( 10 ) NOT NULL, ;
    ID         INTEGER NOT NULL, ;
    CODE       VARCHAR( 12 ) NOT NULL, ;
    TIMEVALUE  DOUBLE )

INSERT INTO REPAIRTIMES (ADB, ID, CODE, TIMEVALUE) VALUES ('1-',  173609 , '0001',  0 . 3199999 )
INSERT INTO REPAIRTIMES (ADB, ID, CODE, TIMEVALUE) VALUES ('1-',  173609 , '0001',  0 . 319999992847443 )
INSERT INTO REPAIRTIMES (ADB, ID, CODE, TIMEVALUE) VALUES ('1-',  173610 , '0002',  0 . 129999995231628 )
Почему-то числа 0.129999995231628 вставляются округленными до 2-х разрядов.
Что делаю неправильно?
...
Рейтинг: 0 / 0
Проблема с INSERT и DOUBLE
    #33377935
АлександрК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE cursor REPAIRTIMES (;
ADB VARCHAR(10) NOT NULL, ;
ID INTEGER NOT NULL, ;
CODE VARCHAR(12) NOT NULL, ;
TIMEVALUE DOUBLE (15) )
...
Рейтинг: 0 / 0
Проблема с INSERT и DOUBLE
    #33377954
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
VFP 9, в Help-е про указание DOUBLE(..) почему-то не нашел.
...
Рейтинг: 0 / 0
Проблема с INSERT и DOUBLE
    #33378101
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
w3dVFP 9, в Help-е про указание DOUBLE(..) почему-то не нашел.
Вообще-то, есть. Даже с примерами. Статья так и называется " Double Field Type "

HELP VFP9When you need more accuracy, for example, when you have a fixed amount of storage in your table or true floating-point values, use the Double data type instead of Numeric. Unlike with numeric data, you determine the position of the decimal point when you enter the value in a table.

Note:
When the Double data type is used in a table, the number of decimals specified when the field is created is for display purposes only. Visual FoxPro stores the actual value in the field.


Т.е. указание количества знаков после запятой - это не вопрос хранения данных. Это вопрос отображения данных. Вне зависимости от указанной размерности храниться будет столько знаков, сколько указано (но не более 16 - это ограничение точности FoxPro).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE CURSOR test (f1 B, f2 B( 10 ))
INSERT INTO test VALUES ( 1 . 23456 ,  1 . 23456 )
?"test.f1=",test.f1
?"test.f2=",test.f2

SET DECIMALS TO  10 
SET FIXED ON

?"test.f1=",test.f1
?"test.f2=",test.f2

SET DECIMALS TO
SET FIXED OFF
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с INSERT и DOUBLE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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