powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / IIf , Round, Single НЕ округляет
6 сообщений из 6, страница 1 из 1
IIf , Round, Single НЕ округляет
    #39546040
малыш456789
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Подскажите, как с этим бороться. Какой-то глюк, или я что-то не так делаю.
Вин ХП, Акц 2000, mdb

usluga_kolichestvo - Одинарное с плавающей точкой
usluga_kolichestvo=5.6

Конструктор запросов
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
z: [zzuk].[usluga_kolichestvo]= 5,6
z: IIf(0<>0;0;Round([zzuk].[usluga_kolichestvo];1)) = 5,59999990463257
z: IIf(0<>0;0;Round([zzuk].[usluga_kolichestvo];2)) = 5,59999990463257
z: IIf(0<>0;0;Round([zzuk].[usluga_kolichestvo];0)) = 6
z: IIf(0<>0;0;Round(CSng([zzuk].[usluga_kolichestvo]);2))= 5,59999990463257
z: Round(CSng(IIf(0<>0;0;[zzuk].[usluga_kolichestvo]));2)= 5,59999990463257
z: Round(IIf(0<>0;0;[zzuk].[usluga_kolichestvo]);2)= 5,59999990463257



Как округлить и что происходит?
Спасибо
...
Рейтинг: 0 / 0
IIf , Round, Single НЕ округляет
    #39546051
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
малыш456789что происходит?Обычная проблема - десятичные дроби не могут быть представлены точно в двоичной форме.
Single нельзя сравнивать точно - только проверять на попадание в плюс-минус погрешность. И округление не поможет, если оно не до целого.
Можно (но тоже осторожно) преобразовать в строковое представление и сравнить со строковым литералом.
Можно домножить на степень десятки, чтобы получить после округления целое - и тогда сравнивать.
...
Рейтинг: 0 / 0
IIf , Round, Single НЕ округляет
    #39546096
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
малыш456789,
Код: vbnet
1.
Round(CDec([zzuk].[usluga_kolichestvo]);1)

Хотя в запросе работать не должно, ЕМНИП
...
Рейтинг: 0 / 0
IIf , Round, Single НЕ округляет
    #39546117
малыш456789
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так выкрутился
Код: vbnet
1.
z: IIf(0<>0;0;cstr(Round([zzuk].[usluga_kolichestvo];2)))= 5,6


Всем спасибо
...
Рейтинг: 0 / 0
IIf , Round, Single НЕ округляет
    #39546131
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
малыш456789Вот так выкрутился
Код: vbnet
1.
z: IIf(0<>0;0;cstr(Round([zzuk].[usluga_kolichestvo];2)))= 5,6


Попробуйте всё-таки
Код: vbnet
1.
z: IIf(0<>0;0;CInt([zzuk].[usluga_kolichestvo]*100)) = 5,6*100


Понадёжнее будет...
...
Рейтинг: 0 / 0
IIf , Round, Single НЕ округляет
    #39546145
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще лучше сменить тип данных на денежный,основного формата(зачем Вам Single-звезды во вселенной считать?)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / IIf , Round, Single НЕ округляет
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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