powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / fox
15 сообщений из 15, страница 1 из 1
fox
    #35484648
Colt76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!
Кто нибудь сталкивался с таким:
Есть таблица dbase3 в ней поле indt NUMERIC 15, 2 однака такой запрос
SELECT SUM(indt), SUM(NTOM(indt)) FROM acc возвращает разные значения?
...
Рейтинг: 0 / 0
fox
    #35484664
Colt76Доброе время суток!
Кто нибудь сталкивался с таким:
Есть таблица dbase3 в ней поле indt NUMERIC 15, 2 однака такой запрос
SELECT SUM(indt), SUM(NTOM(indt)) FROM acc возвращает разные значения?
Хочется при суммировании чисел разной точности получить одинаковый результат? На чем основано желание?
...
Рейтинг: 0 / 0
fox
    #35484668
colt76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да не, точность одинаковая оба sum по одному столбцу
...
Рейтинг: 0 / 0
fox
    #35484697
Colt76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что я загрузил в эту таблицу данные из oracle, при проверке получилось что итоги разные в оркле и в dbf, такое впечатление что данные в таблице acc.dbf получились не с двумя знаками после запятой а больше или это fox както глючит, кстати vfp9.0
...
Рейтинг: 0 / 0
fox
    #35484713
colt76Да не, точность одинаковая оба sum по одному столбцу
Я вижу, что они подному столбцу. Но вот суммируются в запросе в первом случае имеющееся значение с имеющейся для данного типа точностью, а во втором сконвертированное в совершенно другой тип с совершенно другой точнностью. Разница понятна?
...
Рейтинг: 0 / 0
fox
    #35484725
Colt76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага разница вроде понятна, но стобец numeric с точностью 2 после запятой, после преобразования ntom разве меняет точность?
...
Рейтинг: 0 / 0
fox
    #35484736
Colt76Ага разница вроде понятна, но стобец numeric с точностью 2 после запятой, после преобразования ntom разве меняет точность?
Ну и вопросики... :)
Столбец точность не меняет. У результата конвертации другая точность.
Да, тип money имеет точность отличную от numeric.
...
Рейтинг: 0 / 0
fox
    #35484744
Colt76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чот в натуре туплю.
Но меня блин смущает что итоги разные в оракле и в получившемся дбф причем разница на копейки, чо делать?
...
Рейтинг: 0 / 0
fox
    #35484791
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt76Чот в натуре туплю.
Но меня блин смущает что итоги разные в оракле и в получившемся дбф причем разница на копейки, чо делать?
Итоги где разные? SUM(indt) != SUM(NTOM(indt)) или же SUM(indt) = SUM(NTOM(indt)) но не равно ораклу?

Если indt N(15,2) то всегда indt = NTOM(indt), т.к. тип Currency 4 знака после запятой и никаких потерь при конвертации нет. Выполни для проверки:
Код: plaintext
select * from acc where indt != NTOM(indt)
...
Рейтинг: 0 / 0
fox
    #35484810
Colt76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SUM(indt) != oracle
SUM(NTOM(indt)) = oracle

скрипт выполнил получил в результате 9 строк
...
Рейтинг: 0 / 0
fox
    #35484819
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt76SUM(indt) != oracle
SUM(NTOM(indt)) = oracle

скрипт выполнил получил в результате 9 строк

А показать не догадался? Результат select выложи если на нем SUM(indt) != SUM(NTOM(indt)) или исходную дбфку
...
Рейтинг: 0 / 0
fox
    #35484830
Colt76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Резкльтат положил, а вся таблица слишком большая зараза.
...
Рейтинг: 0 / 0
fox
    #35484917
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt76Резкльтат положил, а вся таблица слишком большая зараза.
По твоей таблице:
Код: plaintext
SELECT SUM(indt) as s1, SUM(NTOM(indt)) as s2 FROM acc1
s1=13630786325,55 и s2=13630786325,5500

А дальше лажа какая-то начинается:
Код: plaintext
1.
? s1=s2 && .F.
? s1-s2 &&  0 . 0000 

Тут все 9 записей
Код: plaintext
select indt, NTOM(indt) from acc1 where indt != NTOM(indt)

Но не смотря на вышесказанное разной суммы не видно.
Поэтому надо твою исходную таблицу смотреть. Если большая, то оставь в ней только поле indt и запакуй. Только проверь что по ней SUM(indt) и SUM(NTOM(indt)) на копейки расходятся.

А какая из сумм точная не выяснил?
...
Рейтинг: 0 / 0
fox
    #35484933
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще мысль: N 15, 2 - это 12 знаков целого и 2 поле запятой
Если SUM(indt) имеет 13 знаков целого, то младший разряд (единицы копеек) не влезут в N 15, 2 и округлятся. Ошибки никакой фокс при этом не даст.
...
Рейтинг: 0 / 0
fox
    #35485190
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип Currency - это целочисленный тип данных, который отображается как дробное число просто формально отделяя последние 4 знака запятой

Тип Numeric в оперативной памяти , вероятно, хранится как Real. Т.е. на самом деле, количество знаков в этом числе всегда 16. Просто при отображении показывается фиксированное количество знаков после запятой. С автоматическим округлением. Это значит, что последняя цифра не обязательно такая и есть, как отображается. Может там бесконечные 9 в "хвосте".

Простая проверка

Код: plaintext
1.
2.
? 268435456 . 4 =Ntom( 268435456 . 4 ) 
? 13630786325 . 55  = Ntom( 13630786325 . 55 )

показывает, что сравнивать напрямую Numeric и Currency - нельзя. Их предварительно следует преобразовать к одному типу данных. Причем преобразование в тип Numeric обязательно следует обрамлять округлением

Код: plaintext
1.
2.
3.
4.
5.
6.
nNum= 268435456 . 4 
yCur=$ 268435456 . 4 
?nNum=yCur
?nNum=MTON(yCur)
?NTOM(nNum)=yCur
?nNum=ROUND(MTON(yCur), 4 ) 

Символ "$" говорит о том, что далее идет число типа Currency. Его использование аналогично явному преобразованию через функцию NTOM(). Как видите, первые 2 сравнения вернут .F., в то время как последние 2 - .T.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / fox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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