|
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
|
||||||
Глюки VB 2 - точность вычислений (Single, Double)18.11.2019, 23:22. Показов 3465. Ответов 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 точность вычислений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|