Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: Анатолий (Киев)
Тема стара, как мир. Вам надо знать следующее:
1. Числовые поля типа Double и, особенно, Single не обеспечивают точное представление дробных и больших целых чисел;
2. При арифметических вычислениях между числовыми переменными различного типа результат приводится к максимально точному из участвующих типов, способных его принять;
3. При явом указании в выражении целого числа его тип приводится к Integer, а дробного - к Double;
4. В логических операциях тип обоих операндов приводится к более точному из них, подходящему для обоих значений.

Вот, что получилось в окне отладки:

?7.67/7.85 'Double/Double Это ваше "если задать тупо"
 0.977070063694268 
?CDbl(7.67)/Cdbl(7.85) 'То же
 0.977070063694268 
?CSng(7.67)/7.85 'Single/Double Результат - Double, но из-за Single точность хуже. Это ваше с полем.
 0.977070073413241 
?7.67/CSng(7.85) 'Double/Single Результат - Double, но из-за Single точность хуже и результат другой
 0.977070075564416 'Single/Single Результат - Single, самый неточный
?CSng(7.67)/CSng(7.85)
 0.9770701
?CCur(7.67)/7.85 'Currency/Double Результат - Double, т.к. Currency не подходит для такого результата.
 0.977070063694268 
?CDec(7.67)/7.85 'Decimal/Double Результат - Decimal, самый точный.
 0.977070063694267515923566879 

Теперь одинаковые числа:

?7.85/7.85 'Double/Double
 1 
?CSng(7.85)/CSng(7.85) 'Single/Single
 1 
?CSng(7.85)/7.85 'Single/Double
 0.999999987851283 
?CSng(7.85)/CDbl(7.85) 'То же
 0.999999987851283 
?CSng(7.85)/CDec(7.85) 'Single/Decimal Результат - Decimal.
 1

У вас поле имеет тип Single, отсюда и уши. Если вам нужна вісокая точность вычислений, то или применяйте в вычислениях CDec(), или (рекомендую) измените тип поля(ей) на Decimal (Действительное).


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.