|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS booby точно не путаю. тогда вот здесь, наверно, был другой Иван, или тот, что есть сейчас, уже все забыл - и почему после двойного преобразования двоичное представление меняется, и почему непосредственно сравнивать такие числа - не самая умная идея: Задачка ЗЫ Если вам "посередине" на самом деле нужна действительная арифметика удвоенной точности, не используйте хотя бы на этапе хранения вычисленных значений этот формат. Уходите на восьмибайтные структуры двоичного хранения. Применительно к Access это значит - храните полученные значения в полях binary(8). Жизнь существенно упростится. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 13:43 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS впрочем, у конкретного значения типа Double можно определить (вычислить) сколько угодно цифр его записи в десятичной нотации... Умнее было было бы перестать писать совсем уж откровенный бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 13:46 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
sdku, не понял, какой именно термин в вашей реплике представляет тип Double (в VB)... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 13:46 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS, Посмотри свои две первые картинки... Если ты оперируешь в голове яблоками, то оперируй только яблоками и всё будет хорошо... Допустим ты положил в мусорное ведро яблоко не глядя... Пока ты кроме яблок ничего не замечаешь - всё норм, одно яблоко положил - одно и лежит, вытащил его - тоже норм, - нет в ведре яблок... А ты что делаешь? Положил не глядя, потом достал яблоко из мусорного ведра и опа такой - а х.ле в ведре мусор лежит ??? Типа яблоко нагадило... По идее, если оперируешь чисто яблоками, то мусор -3.33....E-16 на самом деле равный 0,000000000000000333 не должен тебя особо напрягать (достаточная инженерная точность как писали ниже), если тебя это все таки напрягает - не выноси никому мозк и в первую очередь самому себе... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 13:49 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
booby тогда вот здесь, наверно, был другой Иван, или тот, что есть сейчас, уже все забыл - и почему после двойного преобразования двоичное представление меняется, и почему непосредственно сравнивать такие числа - не самая умная идея: Задачка кто старое: booby даже исходный x сам с собой на равенство/неравенство не вполне корректно сравнивать.. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 13:53 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS, Из HELPа: "Тип данных double – 64-разрядная переменная с плавающей запятой." Думаю,это сугубо моё личное мнение,не стоит слишком глубоко(достаточно базовых знаний-это обязательно) вникать в суть того,что не понадобится,а вот если понадобится-тогда и изучите Поле двойной точности с плавающей запятой в качестве ключевого-здесь более интересно не что такое поле с плавающей запятой и как оно отображается,а как можно додуматься до использования его в качестве ключа ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 14:06 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
sdku, могу только повторить: я искал коллизии в самопальном ДСЧ. И для этого складывал его результаты в таблицу. А чтобы быстрее проверять* новые результаты на совпадение со старыми -- приндексировал эту таблицу по этому (единственному, на самом деле) её полю. То, что я употребил слово "ключ" вместо "индекс" -- ну, звиняйте. Я просто нажал в конструкторе кнопку с ключиком, чтобы создать индекс с уникальными значениями. ________________ * = на самом деле, просто проверять, слово "быстрее" тут лишнее ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 14:12 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS ...Я просто нажал в конструкторе кнопку с ключиком, чтобы создать индекс с уникальными значениями. индекс с уникальными значениями формирует структуру, которая работает так, как должно работать то, что в реляционной теории называется ключом. В этом контексте "ключ" и "индекс с уникальными значениями" - полные синонимы. Правильная работа ключа целиком основана на наличии точных правил, позволяющих надежно сравнивать значения, как минимум, на равенство/неравенство. Менее важно, но используется для сортировки предположение о надежности сравнения на меньше. Здесь вы добровольно объявляете ключом поле с заведомо ненадежными правилами сравнения. Маловероятно, что это может вас устроить. И, это вы уже проходили , независимо от того, чей глаз от этого должен выкатиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 14:31 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
booby Здесь вы добровольно объявляете ключом поле с заведомо ненадежными правилами сравнения. PS. Ещё раз, если два значения типа Double (или "Двойное с плавающей точкой" в таблице) равны, то они будут оставаться равными всегда. А если не равны, то будут оставаться неравными. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 14:52 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS .... значения типа Double имеют абсолютно надежные правила сравнения .... PS. Ещё раз, если два значения типа Double (или "Двойное с плавающей точкой" в таблице) равны, то они будут оставаться равными всегда.... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 15:07 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS могу только повторить, что значения типа Double имеют абсолютно надежные правила сравнения смотря какая точность. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 15:12 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
sdku, покажите код, в котором два значения типа Double, оставаясь каждое неизменным, то равны, то не равны друг другу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 15:14 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
booby тогда вот здесь, наверно, был другой Иван, или тот, что есть сейчас, уже все забыл - и почему после двойного преобразования двоичное представление меняется, и почему непосредственно сравнивать такие числа - не самая умная идея: Задачка ТС клинит. Ему же объяснили он опять "за рыбу деньги" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 15:17 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
ROI смотря какая точность. Код: vbnet 1. 2. 3. 4. 5.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 15:18 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS sdku, покажите код, в котором два значения типа Double, оставаясь каждое неизменным, то равны, то не равны друг другу. Может объясните ЗАЧЕМ Вам этот тип-уж очень интересно (сегодня это не так актуально,но лет 40 назад,если это не есть объективная необходимость, за такое расточительное отношение к ресурсам Вас бы к компьютеру близко не подпустили) Иван FXS sdku, могу только повторить: я искал коллизии в самопальном ДСЧ. И для этого складывал его результаты в таблицу. А чтобы быстрее проверять* новые результаты на совпадение со старыми -- приндексировал эту таблицу по этому (единственному, на самом деле) её полю... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 15:58 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 15:59 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
sdku если Вы не работаете с огромными числами(значениями) то ЗАНАХРЕНА Вам этот тип???? -- какие огромные числа? У ДСЧ результат вообще [0;1). В смысле "ЗАНАХРЕНА этот тип"? А какой использовать -- Single, что ли? Типа, экономить 4 байта на переменную? О чём вообще спич? Ну, Currency ... не понимаю, нафига он мне? В том ДСЧ, про который я сейчас говорю, вообще Decimal ( целочисленный !) внутри. Код: vbnet 1. 2. 3.
Вы не знаете (и не можете знать), что я делаю (и что мне нужно), но как-то с гонором начинаете поучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 16:27 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS booby Здесь вы добровольно объявляете ключом поле с заведомо ненадежными правилами сравнения. 1) за логикой своих высказываний все-таки лучше следить. Иначе может оказаться, что в истинные они обращаются только при ложности посылок. Для того чтобы индексация работала, необходим сам факт наличия правил сравнения, а термин "надежные", по крайней мере, в использованном вами смысле, требует уточнения. 2) кое-что, похоже вы забыли. Попробую напомнить: 2.а) Стандарт предполагает наличие двух нулей - положительного и отрицательного. У них разные двоичные представления, но для vba несомненно, думаю, что и для Access как субд тоже, они всегда точно равны. По крайней мере, полученный однажды в индексе отрицательный ноль не даст там появиться второму положительному. Существенно это для вашего случая или нет - издалека неведомо. 2.б) VBA тщательно оберегает вас от получения NAN в качестве результата вычисления простого выражения сорта sqr(-1) Однако из этого не следует, что он точно и несомненно не сможет у вас приключиться в вашем не показанном вычислении. Я не знаю, что с этим делает Access - запишет он NaN в таблицу или откажет. Но, если вдруг запишет, то ключ немедленно превратится в тыкву, поскольку NaN ничему не равен, в том числе самому себе. Один раз попавший в уникальный индекс NaN обязан попадать туда произвольное количество раз. Дальнейшее к ключу, само по себе не относится, но... с) По отношению к "надежному" сравнению, что бы это ни значило, обычно "естественно" предполагают применимость правила транзитивности. То есть, если a = b И b = c ТО несомненно a = c На чем строится ваша уверенность, что транзитивность вообще применима к действительным числам двойной точности. d) Следующее "естественное" предположение, что из a = b несомненно следует, что 1000*a = 1000*b Вот это не обеспечивалось исторически ни первоначальными формулировками стандарта ни первоначальными фактическими реализациями. e) умножение действительных чисел двойной точности, в общем случае, некоммутативно: a*b и b*a не обязаны давать один и тот же двоичный результат. Даже если сейчас во всей этой теме что-то исправлено, как методом уточнения стандарта, так и методом внесения исправлений в железо, свободно манипулировать утверждениями безапеляционного типа в такой теме можно, при условии что вы точно знаете и понимаете все особенности своего окружения. Удачи в борьбе с отображением значений действительных чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 16:37 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
booby То есть, если a = b И b = c ТО несомненно a = c На чем строится ваша уверенность, что транзитивность вообще применима к действительным числам двойной точности. booby d) Следующее "естественное" предположение, что из a = b несомненно следует, что 1000*a = 1000*b Вот это не обеспечивалось исторически ни первоначальными формулировками стандарта ни первоначальными фактическими реализациями. e) умножение действительных чисел двойной точности, в общем случае, некоммутативно: a*b и b*a не обязаны давать один и тот же двоичный результат. если а равно b, то они будут равны всегда . ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 16:42 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS В том ДСЧ, про который я сейчас говорю, вообще Decimal ( целочисленный !) внутри. Не надо хранить результаты вычислений, выполненных в арифметике cdec в полях binary double. Для этого у Access есть тип Numeric, точно соответствующий формату внутреннего представления таких чисел И вы опять ошибаетесь, целиком "целочисленные внутри" - currency, у них и арифметика целочисленная.. Наличие шкалы в decimal существенно отличает арифметику в этом типе от обычной целочисленной. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 16:53 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS если а равно b, то они будут равны всегда . Это критически зависит от года выпуска железа, по отношению к которому вы производите столь безумное суждение. Они, исторически, могли оказываться равными при первом сравнении и не равными при втором. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 16:55 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
кстати booby d) Следующее "естественное" предположение, что из a = b несомненно следует, что 1000*a = 1000*b Вот это не обеспечивалось исторически ни первоначальными формулировками стандарта ни первоначальными фактическими реализациями. -- обеспечивается, конечно: вызов любой стандартной математической функции (в том числе и УМНОЖИТЬ(a, b)) с одними и теми же аргументами -- что явно так в сформулированном вами примере -- даёт всегда один и тот же результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 16:59 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
booby Это критически зависит от года выпуска железа -- шумящее железо? Ну-ну. А 12345678 в нём у вас всегда равно 12345678? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 17:01 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
Иван FXS кстати booby d) Следующее "естественное" предположение, что из a = b несомненно следует, что 1000*a = 1000*b Вот это не обеспечивалось исторически ни первоначальными формулировками стандарта ни первоначальными фактическими реализациями. -- обеспечивается, конечно: вызов любой стандартной математической функции (в том числе и УМНОЖИТЬ(a, b)) с одними и теми же аргументами -- что явно так в сформулированном вами примере -- даёт всегда один и тот же результат. ваши домыслы, сами по себе для меня давно не интересны. Извините. Верить вы можете вообще во что угодно. Даже в такую фигню, как "вызов функции умножения всегда дает тот же результат" применительно к волшебным binary double Вероятно, даже более того, персонально вам разрешено верить и в то, что два последовательных преобразования десятичного литерала 1000 в двоичное представление тоже всегда дает один и тот же результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 17:03 |
|
MS Access отображает значения Double (Двойное с плав. точкой) не полностью?
|
|||
---|---|---|---|
#18+
booby Не надо хранить результаты вычислений, выполненных в арифметике cdec в полях binary double. booby Для этого у Access есть тип Numeric, точно соответствующий формату внутреннего представления таких чисел booby И вы опять ошибаетесь, целиком "целочисленные внутри" - currency, у них и арифметика целочисленная.. Наличие шкалы в decimal существенно отличает арифметику в этом типе от обычной целочисленной. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2022, 17:10 |
|
|
start [/forum/topic.php?fid=45&msg=40126887&tid=1609490]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
218ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 342ms |
0 / 0 |