Форум: "Прочее";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];
Вниз"Ничего не понимаю" - java не умеет считать или я? Найти похожие ветки
← →
Kostafey © (2008-07-01 18:47) [0]Толи я сошел с ума, то ли мой комп, но:
public class HellowCalc
{
public static void main(String [] args)
{
double x = 0.0;
do {
System.out.println("x = " + x);
x += 0.1;
if (x>1) break;
} while(true);
}
}
E:\Temp\C>javac HellowCalc.java
E:\Temp\C>java HellowCalc
x = 0.0
x = 0.1
x = 0.2
x = 0.30000000000000004
x = 0.4
x = 0.5
x = 0.6
x = 0.7
x = 0.7999999999999999
x = 0.8999999999999999
x = 0.9999999999999999
меняю
double x = 0.0;
на
float x = 0;
получаем:
x = 0.0
x = 0.1
x = 0.2
x = 0.3
x = 0.4
x = 0.5
x = 0.6
x = 0.70000005
x = 0.8000001
x = 0.9000001
← →
Плохиш © (2008-07-01 18:51) [1]
> Kostafey © (01.07.08 18:47)
И в чём проблема?
← →
Правильный-Вася (2008-07-01 18:52) [2]0.1 в разных случаях разного типа
← →
Renegat (2008-07-01 18:53) [3]А как вы считаете, представима ли одна десятая конечной двоичной дробью?
← →
Kostafey © (2008-07-01 18:53) [4]> [1] Плохиш © (01.07.08 18:51)
> > Kostafey © (01.07.08 18:47)
> И в чём проблема?
Дык хвосты эти откуда?
Я ожидал просто
x = 0.0
x = 0.1
x = 0.2
x = 0.3
x = 0.4
x = 0.5
x = 0.6
x = 0.7
x = 0.8
x = 0.9
А в более сложных вычислениях в нескольких циклах
вообще все плавать будет...
← →
Плохиш © (2008-07-01 18:55) [5]
> Kostafey © (01.07.08 18:53) [4]
> Дык хвосты эти откуда?
> Я ожидал просто
Строит прочитать про вещественные числа и хранение их в двоичном виде...
← →
Kostafey © (2008-07-01 18:55) [6]> [1] Плохиш © (01.07.08 18:51)
В первом случае цикл вообще выполнил на 1 итерацию
больше чем ожидалось!
← →
Anatoly Podgoretsky © (2008-07-01 18:56) [7]> Kostafey (01.07.2008 18:47:00) [0]
Еще один, который не знает как работают числа с плавающей запятой.
← →
Kostafey © (2008-07-01 18:56) [8]> [5] Плохиш © (01.07.08 18:55)
> Строит прочитать про вещественные числа и хранение их в
> двоичном виде...
Теперь, похоже придется.
С чего начать?
← →
Kostafey © (2008-07-01 18:57) [9]> [7] Anatoly Podgoretsky © (01.07.08 18:56)
> > Kostafey (01.07.2008 18:47:00) [0]
>
> Еще один, который не знает как работают числа с плавающей
> запятой.
А как проблема решается?
← →
Плохиш © (2008-07-01 18:58) [10]
> Kostafey © (01.07.08 18:55) [6]
> > [1] Плохиш © (01.07.08 18:51)
>
> В первом случае цикл вообще выполнил на 1 итерацию
> больше чем ожидалось!
Тогда уж, во втором на одну меньше, чем ожидалось. На условие окончание внимательно посмотри.
> С чего начать?
А ссылку придётся в качестве самостоятельной работы поискать.
← →
pasha_golub © (2008-07-01 18:59) [11]
> Kostafey © (01.07.08 18:57) [9]
>
> > [7] Anatoly Podgoretsky © (01.07.08
Храни в целых числах, при выводе юзеру дели на нужное число. :)
← →
Kostafey © (2008-07-01 19:00) [12]> Тогда уж, во втором на одну меньше, чем ожидалось. На условие
> окончание внимательно посмотри.
Да точно.
> А ссылку придётся в качестве самостоятельной работы поискать.
Эта проблема вообще решается.
Ну в смысле найду я атериал про хранение чисел.
Это позволит корректно решить задачу?
← →
Плохиш © (2008-07-01 19:01) [13]Кстати, я не понял, а что по ентой крутейшей джаве даже форумов нет? 8-O
Во, левая пародия :-))
← →
Kostafey © (2008-07-01 19:01) [14]> [11] pasha_golub © (01.07.08 18:59)
>
> > Kostafey © (01.07.08 18:57) [9]
> >
> > > [7] Anatoly Podgoretsky © (01.07.08
>
> Храни в целых числах, при выводе юзеру дели на нужное число.
> :)
А это мысль...
← →
Kostafey © (2008-07-01 19:02) [15]> [13] Плохиш © (01.07.08 19:01)
> Кстати, я не понял, а что по ентой крутейшей джаве даже
> форумов нет? 8-O
Кудаж без них. Есть.
← →
Anatoly Podgoretsky © (2008-07-01 19:09) [16]> Kostafey (01.07.2008 18:56:08) [8]
Иди на Королевство, ищи что то подобное "Неявные осовбенности вещественных чисел".
Для твоей задачи нужны числа с фиксированой точностью, ака BCD
или работа с целыми и форматирование, при котором снова нарвешься на особенности.
Тебе не повезло, что у тебя число 0,1 таких чисел просто нет.
← →
Kostafey © (2008-07-01 19:15) [17]> [16] Anatoly Podgoretsky © (01.07.08 19:09)
Ясно. Списибо.
Кстати,
> [11] pasha_golub © (01.07.08 18:59)
> Храни в целых числах, при выводе юзеру дели на нужное число.
> :)
помогло.
← →
Anatoly Podgoretsky © (2008-07-01 19:18) [18]Это ты погорячился и очень. После деления получаешь снова вещестственное и снова ошибку.
Поищи нет ли в Яве BCD или хотя бы Currency/Money
← →
iZEN (2008-07-01 19:28) [19]О боже, не надо таким Java.
← →
Kostafey © (2008-07-01 20:06) [20]> [19] iZEN (01.07.08 19:28)
И это вместо конструктивного совета?
:)
← →
Юрий Зотов © (2008-07-01 21:03) [21]> Kostafey © (01.07.08 18:47)
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
Компьютер работает не в десятичной, а в двоичной системе, вот и весь фокус. И никакие Java, Delphi или C здесь абсолютно ни при чем.
← →
Zeqfreed © (2008-07-01 21:09) [22]Блин, ну ваще-е-е.
В программе вы работаете с числами как они есть. А при любом выводе пользователю будьте любезны использовать функции форматирования, дабы не наткнуться на такие вот неожиданности.
Набираем в Фаерфоксе "java float format", тычем энтер и лицезреем:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html
← →
Anatoly Podgoretsky © (2008-07-01 23:00) [23]> Zeqfreed (01.07.2008 21:09:22) [22]
О каком форматирование речь, когда у него расчеты не идут, даже количество иттераций разное.
← →
Marser © (2008-07-01 23:10) [24]Вот так и появляются явоненавистники :-))
"Это лишний раз доказывает, что дельфя гиморрой" (с) классика Орешника :-))
> iZEN (01.07.08 19:28) [19]
>
> О боже, не надо таким Java.
А воспитать? ;-)
← →
Zeqfreed © (2008-07-01 23:12) [25]> Anatoly Podgoretsky © (01.07.08 23:00) [23]
Ну и сравнение тоже надо делать правильно. Это да :)
← →
Anatoly Podgoretsky © (2008-07-01 23:44) [26]> Zeqfreed (01.07.2008 23:12:25) [25]
Именно так и поэтому ему повезло, что не написал if (x=1) break; а я встречал и такое :-)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.042 c