powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / не могу понять, округляет неправильно
3 сообщений из 3, страница 1 из 1
не могу понять, округляет неправильно
    #33690430
dimakz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть табличка а, структура:
gl - character
bal - double 8,



ALTER TABLE a.dbf ADD COLUMN bal1 i (50)
UPDATE a SET bal1 = bal/1000


все делает нормально, кроме,
если значение - 1000678, то он округляет в столбце bal1 - 1000 , но должно же быть 1001

как сделать надо?
...
Рейтинг: 0 / 0
не могу понять, округляет неправильно
    #33690441
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPDATE a SET bal1 = Round(bal/1000,0)
...
Рейтинг: 0 / 0
не могу понять, округляет неправильно
    #33690805
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Для типа INTEGER значение размерности игнорируется. Его можно вообще не указывать. Такие поля всегда занимают 4 байта.

Т.е. "bal1 i (50)" ошибки не вызовет, просто (50) будет проигнорировано

2) При модификации содержимого полей типа INTEGER дробная часть просто отбрасывается. Не округляется. Это эквивалентно примерно такому преобразованию

?INT(1000678/1000)

Чтобы этого избежать, необходимо использовать явные функции округления ROUND(), как и предложил Piva

Как вариант. Если вместо типа INTEGER использовать тип NUMERIC или FLOAT, то в этом случае будет происходить округление.

Код: plaintext
1.
2.
ALTER TABLE a.dbf ADD COLUMN bal1 N( 10 )
UPDATE a SET bal1 = bal/ 1000 

Размерность N(10) даже несколько больше, чем размерность INTEGER в смысле допустимых значений. Но физически занимает больше места. 10 байт вместо 4.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / не могу понять, округляет неправильно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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