Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 27.05.2018
Сообщений: 147

float и double работают неточно

03.03.2022, 15:40. Показов 820. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно написать небольшое приложение на нативе. Попробовал Java и это ужас, простое сложение дает некорректные результаты. В c# такого не было, как исправить? может чего то не знаю
пример:
Java
1
2
3
4
5
6
7
8
9
        private float test = 0;
 
        ((Button)root.findViewById(R.id.helpButton)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                test += 0.1;
                ostalosTV.setText(String.valueOf(test));
            }
        });
семь раз нажимаешь и получается число 0,70000005 вместо 0,7
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2022, 15:40
Ответы с готовыми решениями:

Почему типы float и double не работают с dynamic?
Почему типы float и double не работают с dynamic?

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

Как обойтись без float, double, long double?
К примеру мне надо в программе использовать что-то вроде -0,00000000000003626686812 и 0,00000000000002072392464. Притом чтобы считалось...

5
Модератор
Эксперт Java
 Аватар для alecss131
2856 / 1363 / 406
Регистрация: 11.08.2017
Сообщений: 4,352
Записей в блоге: 2
03.03.2022, 15:52
Цитата Сообщение от onefreddy Посмотреть сообщение
простое сложение дает некорректные результаты
float и double во всех языках одинаковые
Цитата Сообщение от onefreddy Посмотреть сообщение
приложение на нативе
натив на андроиде это с++

про точность к изучению Что нужно знать про арифметику с плавающей запятой
1
1 / 1 / 0
Регистрация: 27.05.2018
Сообщений: 147
03.03.2022, 21:41  [ТС]
Цитата Сообщение от alecss131 Посмотреть сообщение
про точность к изучению Что нужно знать про арифметику с плавающей запятой
пофиксить это нельзя, чтобы нормально считало?

Цитата Сообщение от alecss131 Посмотреть сообщение
натив на андроиде это с++
вау, а где это сказано? всегда говорили ява родная для андроида, еще в докотлинские времена
0
Модератор
Эксперт Java
 Аватар для alecss131
2856 / 1363 / 406
Регистрация: 11.08.2017
Сообщений: 4,352
Записей в блоге: 2
03.03.2022, 22:26
Цитата Сообщение от onefreddy Посмотреть сообщение
а где это сказано?
https://developer.android.com/ndk

Добавлено через 43 минуты
Но это не отменят что родные языки по прежнему Java и Kotlin.
Только тут C++ это NDK, а Java/Kotlin - SDK. И еще говорят что-то типа:
C++ - для компонентов, которым нужна производительность и не нужно взаимодействие с элементами из SDK (кнопочки, доступ к железу). Конечно, его можно сделать через JNI (а там все равно Java) но это гемор еще тот.
Java/Kotlin - для всего остального.
Еще на сколько знаю только из под с++ есть доступ к вулкану
1
49 / 37 / 14
Регистрация: 05.02.2010
Сообщений: 249
04.03.2022, 09:02
Лучший ответ Сообщение было отмечено onefreddy как решение

Решение

Цитата Сообщение от alecss131 Посмотреть сообщение
натив на андроиде это с++
Зачем Вы человека запугали?)
В общепринятых формулировках Native android developer - Это Kotlin/Java через android studio (99% она)
А не native - это всякие Flutter, FireMonkey и прочие

Цитата Сообщение от onefreddy Посмотреть сообщение
пофиксить это нельзя, чтобы нормально считало?
Посмотрите на BigDecimal, может поможет. Только используйте конструктор со строкой, а не double.
Ну и работать оно будет сильно медленнее, зато точно с точки зрения десяточной математики.
1
1 / 1 / 0
Регистрация: 27.05.2018
Сообщений: 147
04.03.2022, 15:33  [ТС]
Цитата Сообщение от Dreablin Посмотреть сообщение
Посмотрите на BigDecimal, может поможет. Только используйте конструктор со строкой, а не double
Спасибо, должен подчеркнуть используйте конструктор со строкой ключевое слово, потому что до вас я уже пробовал из числовых типов инициализировать BigDecimal и получал в дальнейшем те же погрешности после арифметических операций. Сейчас попробовал из строк, и теперь это работает правильно!
alecss131, тоже правильно говорит, спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.03.2022, 15:33
Помогаю со студенческими работами здесь

Диапазон значений float, double и long double (и не только)
нужно вычислить диапазон значений всех типов. я так понял, у этих трех результат должен быть в экспоненциальном виде, но я не знаю и не...

double в float
Всем привет. Такой вопрос: если я провожу очень много вычислений со значениями с плавающей точкой (допустим {10}^{10} операций), то...

Неточность double и float
Приведу 2 примера кода: Int a=10000001; float b=(float) a; a=(int)b; // "a" уже равно не 10000001, а 10000000 float...

Конвертировать float в double
Ошибка 2 Не удается неявно преобразовать тип "double" в "float". Существует явное преобразование (возможно, пропущено приведение...

Float/double IEEE754
Доброго вечера! Как я понимаю на вычисления с плавающей точкой влияет процессор, и компилятор языка. Как узнать поддерживает ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru