Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 301
#1

Странная арифметика Java

19.02.2012, 22:05. Просмотров 984. Ответов 9
Метки нет (Все метки)

Здравствуйте.
Кто подскажет в чем дело, выполняю обычный пример (-3.4)+3, а ответ получаю совершенно необычный -0.4000001. С чем это может быть связано? Используемые типы данных float.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 22:05
Ответы с готовыми решениями:

Ошибка java.lang.ClassCastException: com.organizer.ToDoItemDescr cannot be cast to java.util.Map
Ошибка появляется когда пытаюсь вытянуть из кастомного адаптера запись...

Не создаются BuildConfig.java R.java
BuildConfig.java , R.java Не создаются в папке /gen при создании проекта в...

Странная(или не странная, незнаю) реакция на буквы, знаки операций
Всем добрый день. Делаю маленькую наработку, пока есть только начало. Ниже...

Странная кодировка, ну ооочень странная
Всем доброго времени суток! Помогите пожалуйста решить проблему! Вот исходный...

Какую версию Java поддерживает .Net Java# И какую VS6.0 Java++ ?
Какую версию Java поддерживает .Net Java# И какую VS6.0 Java++ ? Ответье,...

9
Mr.kto
95 / 96 / 18
Регистрация: 18.08.2012
Сообщений: 308
19.02.2012, 22:22 #2
Цитата Сообщение от Hank Посмотреть сообщение
Используемые типы данных float.
используй double!
0
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 301
20.02.2012, 08:02  [ТС] #3
Пробовал и double, количество разрядов после запятой только увеличивается.
0
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
22.02.2012, 11:28 #4
Цитата Сообщение от Hank Посмотреть сообщение
обычный пример (-3.4)+3
(-3.4f)+3.0f - не?
0
dollar8
13 / 13 / 0
Регистрация: 25.09.2011
Сообщений: 84
22.02.2012, 12:28 #5
Цитата Сообщение от Hank Посмотреть сообщение
Здравствуйте.
Кто подскажет в чем дело, выполняю обычный пример (-3.4)+3, а ответ получаю совершенно необычный -0.4000001. С чем это может быть связано? Используемые типы данных float.
дабы не переписывать/ советую почитать короткую но очень доступную статью



раздел сравнение вещественных чисел.
там все очень понятно.
0
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 301
22.02.2012, 23:30  [ТС] #6
Спасибо. Статья действительно полезная, но хотелось бы результат видеть не округленным, а таким какой он был бы в других языках (например Си).
0
dollar8
13 / 13 / 0
Регистрация: 25.09.2011
Сообщений: 84
23.02.2012, 00:47 #7
Цитата Сообщение от Hank Посмотреть сообщение
Спасибо. Статья действительно полезная, но хотелось бы результат видеть не округленным, а таким какой он был бы в других языках (например Си).
в общем я поднимал уже этот вопрос в разделе Джавы.

почему 3.3 *3 равно 9.899999999999999 ?

ситуация аналогичная и решение будет аналогичным.
1
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 301
23.02.2012, 20:13  [ТС] #8
Благодарю. Работает.
Если интересно могу рассказать как я боролся с числами типа "1.0" чтобы они выводились вот так "1".
0
dollar8
13 / 13 / 0
Регистрация: 25.09.2011
Сообщений: 84
24.02.2012, 22:20 #9
Цитата Сообщение от Hank Посмотреть сообщение
Благодарю. Работает.
Если интересно могу рассказать как я боролся с числами типа "1.0" чтобы они выводились вот так "1".
ну я брал это дабл и сравнивал с интом. если равно выводил инт
Java
1
2
if (d == (int)d) print((int)d);
else print (d);
в общем как-то так.

а ты как сделал?
0
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 301
24.02.2012, 22:55  [ТС] #10
Аналогично
0
24.02.2012, 22:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2012, 22:55

Странная ошибка
Всё было хорошо и вдруг появилась ошибка: "Непредвиденная ошибка при создании...

Странная работа Wi-Fi
Вчера начал пропадать интернет т.е. есть, рраз на пол минуты - минуту...

Странная математика
float r1 = 225 - (-45); float r2 = 50 - (-50); float r3 = r1 / r2; float r4...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru