|
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
|
||||||
Глюки VB 2 - точность вычислений (Single, Double)18.11.2019, 23:22. Показов 3517. Ответов 26
Метки нет (Все метки)
Добрый день как правильно объявить переменную делимого?
Почему правильное объявление переменной ведет к неправильному результату? Кликните здесь для просмотра всего текста
Не красивое объявление переменной b но правильный результат Кликните здесь для просмотра всего текста
Как поступить?
0
|
||||||
| 18.11.2019, 23:22 | |
|
Ответы с готовыми решениями:
26
Глюки VB - точность вычислений (Single, Double) Точность вычислений при переводе углов в радианы Тип данных single/double представление в памяти |
|
|
||||||
| 19.11.2019, 08:10 | ||||||
|
Можете объявить как вещественное число двойной точности.
Double наиболее эффективен для дробных типов данных, так как процессоры на современных платформах выполняют операции с плавающей запятой с двойной точностью.
0
|
||||||
|
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
|
|
| 19.11.2019, 11:39 [ТС] | |
|
Добрый день пробовал тоже самое к сожалению
0
|
|
|
Супер-модератор
|
||||||
| 19.11.2019, 12:21 | ||||||
|
Не столь важно, как объявлять... Важнее - как печатать:
0
|
||||||
|
|
||
| 19.11.2019, 13:54 | ||
|
У меня гуд!
0
|
||
|
|
|
| 19.11.2019, 17:00 | |
|
0
|
|
|
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
|
|
| 19.11.2019, 17:26 | |
|
В вещественный регистр загружается значение делимого не 0.04, а 0.0399999991059303284. Зашивается, действительно, компилятором VB в исполняемый файл. Это если все переменные объявлены Single.
0
|
|
|
COM‐пропагандист
|
|
| 19.11.2019, 18:14 | |
|
Single и Double принципиально не могут быть точными.
Потому что они так устроены.
1
|
|
|
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
|
|
| 19.11.2019, 18:45 | |
|
При объявлении переменной как Double, погрешность репрезентации вещественного числа снижается, что привод к более точному результату расчёта, который при округлении результата дает ответ = 0,008.
0
|
|
|
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
|
|
| 19.11.2019, 22:23 [ТС] | |
|
Использую для своих нужд для оптимизации вычислений
дома поднял винду XP и VB6 и офис 2003 поставил чтобы все использовало Microsoft DLL и ядрах одного возраста. Маленькие программки писать пойдет. С подобной проблемой сталкивался при написании макросов в EXCEL, в ячейку из переменной попадает значение с такой же проблемой. Скорее всего это на уровне ниже связано (с выделением памяти при определении переменных). Решение да есть два/три варианта: 1. Вывод форматированный - но в переменной результат с ошибкой остается, а с этими данными еще нужно чтото будет делать программе 2. Оставить тип как VARIANT 3. Использовать тип Currency - помогает, но думаю не во всех случаях Но все эти варианты не красивые ибо придется много тестировать и отслеживать все переменные, для достоверности А может глюк VB6 (SP6) Добавлено через 3 минуты Проблема в конкретном приведенном примере Если бы был результат ожидаемый как 2/3 в десятичном представлении то бы бог с ним, а тут все до конца делится Пробовал уходить от дробной части делимое умножал на 1000 потом делил и результат потом делил на 1000 - как вариант не потерять значимые цифры - не помогает
0
|
|
|
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
|
||
| 20.11.2019, 03:22 | ||
|
Если нужны красивые цифры, то либо на типе данных single использовать функцию round/format, если известно количество значащих цифр после запятой, либо объявить все вещественны переменные типом данных Double.
0
|
||
|
|
||
| 20.11.2019, 07:36 | ||
![]() Для чего? Вы ветку прочитали? У ТС с Double результат такой же, как и с Single, а у меня не такой. Сей факт мы тут и пытаемся научно обосновать.
1
|
||
|
Модератор
|
|||||||
| 20.11.2019, 09:39 | |||||||
Newzero, какой тебе результат то нужен в итоге чтобы был?
0
|
|||||||
|
|
|||||||
| 20.11.2019, 11:35 | |||||||
|
Интересно другое, почему у меня VB6 с Double
От чего это зависит?
0
|
|||||||
|
Модератор
|
||||||||
| 20.11.2019, 11:51 | ||||||||
|
Просто для проверки:
0
|
||||||||
|
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
|
|
| 20.11.2019, 16:54 [ТС] | |
|
Добрый день
У меня цель установить правильный тип данных (вроде делаю как положено ) или операцию исправления чтобы при получении данных из переменной были достоверные цифры, где деление без остатка то получать результат как положено т.е. 0,04/5= 0,008, а не 7,999999E-03 а 2/3=0,66666 - это уже не суть сколько знаков буду использовать в дальнейшем, поскольку иного результата не будет Помимо этого данные передаю в EXCEL в ячейках тоже искаженные данные попадают Если решений нет то думаю припишем еще один глюк и тему закроем.
0
|
|
|
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
|
||||||
| 20.11.2019, 17:11 [ТС] | ||||||
|
Попробовал на другом компьютере с W7*64 в VBA EXCELe офиса 2016
Видимо что то недоделано однозначно у VB
0
|
||||||
| 20.11.2019, 17:11 | |
|
Помогаю со студенческими работами здесь
20
Переменные типа Single, Double... продолжит ряд можно? Точность вычислений у double Точность вычислений в double (Обрезание числа) Точность Single точность вычислений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|