Мяв!
Имеем 10000 одинаковых формул.
8000 выдают честный 0, а в одном месте - козу. В чем причина?
Имеем 10000 одинаковых формул.
8000 выдают честный 0, а в одном месте - козу. В чем причина?
29.11.2019 11:31:34
Мяв!
Имеем 10000 одинаковых формул. 8000 выдают честный 0, а в одном месте - козу. В чем причина? |
|
|
|
29.11.2019 11:36:52
RAN, ДОБРЫЙ ДЕНЬ, мяукать не буду, по губе сделал брм-брм-брм ...
заметил лишь, что
Может по умолчанию общий формат сам по себе какие-то странные манипуляции/вычисления делает с числами? имхо
Изменено:
Не бойтесь совершенства. Вам его не достичь.
|
|||
|
|
29.11.2019 11:43:12
но формат "общий" установлен во всем столбце, а коза в 1 строке
|
|
|
|
29.11.2019 11:49:49
RAN, в файле у меня на числовом нормально, а на общем нет...
Не бойтесь совершенства. Вам его не достичь.
|
|
|
|
29.11.2019 11:50:30
|
|
|
|
29.11.2019 11:55:54
RAN, Андрюшенька, без округления сравнивать - лотерея. Вот "джекпот" и выпал.
По вопросам из тем форума, личку не читаю.
|
|
|
|
29.11.2019 12:04:27
Ежели бы =C1=D1 не выдавало ИСТИНА, тогда все понятно. Но тут?
Причем =ЕСЛИ(ЕПУСТО(D1);"ОШИБКА";C1-D1)=(C1-D1) дает ИСТИНА, а =E1=E2 дает ЛОЖЬ PS Это даже не коза, а козопотамище! PPS Сейчас обнаружил, что в файле две строки со значениями 5,945. Так вот, одна считается правильно, вторая - нет.
Изменено: |
|
|
|
29.11.2019 12:58:16
|
|||
|
|
29.11.2019 13:19:20
Ошибка возникает в коде при выполнении арифметической операции
11,245 + (-5,3) При этом оба числа в окне Immediate отображаются одинаково, но не равны... |
|
|
|
29.11.2019 19:16:51
Вить, про стандарт краем уха слышал.
Но, обычно, при этом A<>B. И ежели-бы это было так, вопроса бы не возникло. |
|
|
|
29.11.2019 20:05:22
Здравствуйте, коллеги! См., например, в
Владимир
|
|
|
|
29.11.2019 20:50:54
А что там такого?
Там A <> B, и, соответственно, A - B <> 0. Все, как и должно быть. |
|
|
|
29.11.2019 22:54:03
В ячейках "C1" и "D1" есть разные значения.
Это выглядит так как будто файл пришёл из преобразования от какого-то другого "Excela". |
|
|
|
30.11.2019 14:15:31
Правая часть по вкусу (в зависимости от того, о каких числах идет речь).
Владимир
|
|||||
|
|
30.11.2019 18:47:15
грабли в нежелании учитывать особенности точности вычислений с десятичными числами
стандарт говорит "возможны эксцессы", неосознанное или сознательное игнорирование стандарта - это и есть уверенный шаг навстречу граблям ну, и у нас очередная тема, когда предмет дискуссии не имеет никакого отношения к заявленной теме ибо проблема не в вычислениях внутри ЕСЛИ, а проблема в не знании (не желании) учитывать описанную стандартом ситуацию
Изменено:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|
|
|
30.11.2019 18:50:21
Игорь, как часто ты вместо A-B применяешь ОКРУГЛ(A-B;10) ?
Изменено: |
|
|
|
30.11.2019 19:02:48
Функция округления (ОКРУГЛ) до определенного количества знаков после запятой лишь уменьшает погрешность округления дробного числа (со знаменателем, отличным от степени двойки) до минимально возможного значения. Дробные числа всегда надо сравнивать, как указано в #18 (и эта конструкция не является длинной).
Изменено:
Владимир
|
|
|
|
30.11.2019 19:35:01
Поклюем еще (ник обязывает) .
Число из Вашего файла 5,945 представимо в двоичной системе счисления в виде бесконечной периодической дроби и, соответственно, изначально не может быть точно представлено в формате double. В приближенных вычислениях равенство - это малая по модулю разность.
Изменено:
Владимир
|
|
|
|
30.11.2019 19:49:52
если у меня есть 2 маленькие (но соизмеримые по величине) значения, например вероятность чего-то там А = 1/1000000000 (одна миллиардная) и В = 99/1000000000 (99 миилиардных) с точки зрения этого ABS(A-B)>1E-6 разница между ними меньше чем 1Е-6 (т.е. равны) а на самом деле вероятность этих событий существенно отличается событие В в 99 раз! вероятнее события А нужно сначала оценить размерность величин, а потом уже выбрать точность, с которой их сравнивать но подход в сравнении чисел с определенной точностью, остается универсальным и правильным подходом))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|||
|
|
30.11.2019 19:54:30
Я так давным-давно в институте с аглицкого переводил. Берешь словарь, переводишь все слова, но как составить из 10 вполне осмысленных слов 1 не то, чтобы совсем осмысленное, а хоть чуть-чуть... предложение?
Почему в одном случае Может/не может, хочет/не хочет. а а другом Не может/может, Не хочет/хочет. Где эта грань? Чем определяется?
Изменено: |
|
|
|
30.11.2019 20:02:38
Точность сравнения определяется спецификой задачи и пониманием того, что формат double надежно обеспечивает 15 десятичных разрядов.
Изменено:
Владимир
|
|||
|
|
30.11.2019 20:08:22
|
|||||
|
|
30.11.2019 20:10:18
Currency - хорошо, но Excel такой тип значений ячеек не знает, только VBA.
Владимир
|
||||
|
|
|||