powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Забавная арифметика, честное слово ?!!!!
11 сообщений из 11, страница 1 из 1
Забавная арифметика, честное слово ?!!!!
    #32580176
Alexander Say
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Office2000+SP3
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
a1= 1 / 3 
a2= 1 /a1
? a3
  3  
? a3= 3 
True
? a3-fix(a3)
  0  

a1= 1 / 3 
a2= 1 /(a1+ 1 - 1 )
? a2
  3  
? a2= 3 
False
? a2-fix(a2)
  8 ,88178419700125E- 16 

Если написано 3 то это несколько не так (ну как наша пресса).

Интересно как ALL решают такие глюки ?
Жду рецептов.
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580180
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как объявлены a1 и а2? Фокусы на преобразованиях типов давно известны.
Такие шутки можно получить, к примеру, в случаях
Dim a2
Dim a1
или
Dim a1 As Single
Dim a2 As Double

Если обе объявить одного типа - Single или Double
все будет нормально.
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580182
Alexander Say
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обе переменные имеют один тип: Double
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580183
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробую
Dim a1 As Double
Dim a2 As Double
a1 = 1 / 3
a2 = 1 / (a1 + 1 - 1)
Debug.Print a2
Debug.Print a2 = 3
Debug.Print a2 - Fix(a2)

имею:
3
True
0

Снова:
Dim a2
Dim a1
a1 = 1 / 3
a2 = 1 / (a1 + 1 - 1)
Debug.Print a2
Debug.Print a2 = 3
Debug.Print a2 - Fix(a2)

имею
3
False
8.88178419700125E-16
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580184
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: A2000
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580215
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
много раз обсуждаемая тема
для "плавающей" арифметики не существует точного равенства,
всилу ограничения длины мантиссы.Более того арифметика не линейна т.е. зависит от порядка действий.A+B+C!=C+A+B.

если нужны точные преобразования - то формат "денежный" + стараться избежать делений/умножений --- > влекут переполнение разрядной сетки.
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580220
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пора в ФАК выносить основы.
Чем больше действий, тем больше накапливаемая погрешность.
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580228
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТемныйПора в ФАК выносить основы.
Чем больше действий, тем больше накапливаемая погрешность.
Ага!
при аппаратной обработке плавучки существует термин шумы "округления"
имеется мат.аппарат,распределение вероятностей и т.д.

шум - как неизбежный спутник процесса.
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580229
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вах! Как все сложно-то!
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580326
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander SayOffice2000+SP3
Код: plaintext
1.
? a2-fix(a2)
  8 ,88178419700125E- 16 

Если написано 3 то это несколько не так (ну как наша пресса).
Интересно как ALL решают такие глюки ?
Жду рецептов.

Хм... стандартная проблема вычисления и хранения чисел с плавающей точкой в ограниченном объеме памяти.
В качестве вечернего размышления можешь подумать как хранить иррациональное число с непериодической десятичной частью.
Например пи или e.

В качестве решения проблемы - округлять до определенного знака после запятой (второго, третьего, десятого)
...
Рейтинг: 0 / 0
Забавная арифметика, честное слово ?!!!!
    #32580390
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ТемныйПора в ФАК выносить основы.
Чем больше действий, тем больше накапливаемая погрешность.
http://www.sql.ru/faq/faq_topic.aspx?fid=213
вопрос 19.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Забавная арифметика, честное слово ?!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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