Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1215970748
Alexey
2008-07-13 21:39
2008.08.17
Ссылка на элемент формы по его имени


3-1203685287
TFieldDefs
2008-02-22 16:01
2008.08.17
AddFieldDef - бага в DB.pas


2-1215718154
IvanS
2008-07-10 23:29
2008.08.17
packed record в строку


2-1215954643
maxNmin
2008-07-13 17:10
2008.08.17
удаление в корзину


2-1216197740
Костик
2008-07-16 12:42
2008.08.17
Как потушить монитор?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский