powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Загадка...
15 сообщений из 15, страница 1 из 1
Загадка...
    #39486629
/0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
/0
Гость
select TMP,
cast(TMP as varchar(10)) from
(select round(0.001*623.20,2) as TMP from rdb$database)

вы видите тоже, что и я?
это глюк IBExpert или все таки FB?

FB 2.5.1
IBExpert 2014.10.11.1
...
Рейтинг: 0 / 0
Загадка...
    #39486636
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/0IBExpert 2014.10.11.1
Какой год на дворе?
...
Рейтинг: 0 / 0
Загадка...
    #39486638
/0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
/0
Гость
Выводит 0,61999 и 0.62
...
Рейтинг: 0 / 0
Загадка...
    #39486677
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загадка тут одна - как можно до сих пор не понимать двоичные числа с плавающей точкой
...
Рейтинг: 0 / 0
Загадка...
    #39486712
rstrelba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

явно же глюк

select round(0.001*623.20,3) as TMP from rdb$database
0.62299

select round(0.001*623.20,4) as TMP from rdb$database
0.6232
...
Рейтинг: 0 / 0
Загадка...
    #39486714
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сдается мне раунд из какой-нибудь древнючей УДФ, в итоге результат такого округления принудительный дабл.
решение - выпилить удф-ный раунд. Оно поди еще и null к нолику приводит.
...
Рейтинг: 0 / 0
Загадка...
    #39486747
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Result type: INTEGER, (scaled) BIGINT or DOUBLE
нумерика нет среди результата.

select 0.001*623.20,
round(0.001*623.20,1) as f1,
round(0.001*623.20,2) as f2,
round(0.001*623.20,3) as f3,
round(cast(0.001 * 623.20 as numeric (18,5)),3) as fn3,
round(0.001*623.20,4) as f4,
round(0.001*623.20,5) as f5,


round(0.6232,2),
round(0.6232,3)
from rdb$database


хотя все равно как-то странно.
...
Рейтинг: 0 / 0
Загадка...
    #39486757
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstrelba,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
firebird>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> set sql dialect 1;
SQL> create database 's:\temp\1.fdb';
SQL>
SQL> select round(0.001*623.20,3) as TMP from rdb$database;

                    TMP
=======================
     0.6230000000000000

SQL> select round(0.001*623.20,4) as TMP from rdb$database;

                    TMP
=======================
     0.6232000000000000
...
Рейтинг: 0 / 0
Загадка...
    #39486784
/0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
/0
Гость
Никакие UDF не используются - родной round из комплекта сервера.
По поводу "двоичные числа с плавающей точкой " отчасти согласен, НО
это злополучное число получается как сумма некоторых значений из столбца таблицы,
имеющего формат NUMERIC(12,2). Можно прокастовать 623.20 к этому типу - такая же ситуация.
И если это действительно была ошибка округления ввиду ряда причин - почему при касте в строку
получилось то, что и должно быть, а не '0.61999'?
Конечно можно кастовать в строку, а потом обратно - но это не спортивно как то...
...
Рейтинг: 0 / 0
Загадка...
    #39486795
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое впечатление, что это эксперт с его датасетом и AsFloat портит картину. В эксперте (у меня 17 года) картинка странная.

Влад,
в доке
https://firebirdsql.org/refdocs/langrefupd21-intfunc-round.html
нет нумерика как результат, это в доке кривовато написано?
...
Рейтинг: 0 / 0
Загадка...
    #39486799
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/0,

родной round я выше показывал. Вот ещё раз:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> set sql dialect 1;
SQL> create database 's:\temp\1.fdb';
SQL> select TMP,
CON> cast(TMP as varchar(10)) from
CON> (select round(0.001*623.20,2) as TMP from rdb$database);

                    TMP CAST
======================= ==========
     0.6200000000000000 0.62
...
Рейтинг: 0 / 0
Загадка...
    #39486801
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/0...почему при касте в строку получилось то, что и должно быть...
Ну может потому что сервер (а не кто-то другой) в строку переводит

ведь вот здесь 20634261 Влад показал что выдает сервер
однако у тебя вопросы не исчезли
...
Рейтинг: 0 / 0
Загадка...
    #39486806
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyВлад,
в доке
https://firebirdsql.org/refdocs/langrefupd21-intfunc-round.html
нет нумерика как результат, это в доке кривовато написано?(scaled) BIGINT - не оно ?
...
Рейтинг: 0 / 0
Загадка...
    #39486808
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по идее да, да и по наблюдению оно. Перекину-ка я топик в соседний раздел, пусть Хвастунов про свое детище расскажет.

Модератор: Тема перенесена из форума "Firebird, InterBase".
...
Рейтинг: 0 / 0
Загадка...
    #39486824
/0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
/0
Гость
Всем спасибо! Я получил ответ на вопрос.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Загадка...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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