powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Округление чисел с плавающей запятой!!!!
12 сообщений из 62, страница 3 из 3
Округление чисел с плавающей запятой!!!!
    #33587199
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ежемуха
> andy_h Народ, ещё раз повторюсь. Тема была "Как округлять?", а не b]"Как хранится?"

> Так если щас выяснится что если компьютер не может успешно отличить

> 13.5465000000000000000000000000000001 от
> 13.5464999999999999999999999999999999

> то тогда и выяснится, что никак?Тема==Ответить




примерно так и есть, только числа надо аккуратнее подобрать. с этими
может и будет разница.

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587235
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy_h
Где здесь про Excel ???

Кусок кода в начале ещё добавил.

Сказали бы: "Не, мужик!!! Это делается не так, а вот так!!!".
Нет же ... сразу в библиотеку посылают, или в "любви" признаются.
А по сути - ничего ...

Вот отсюда все начали кипеть: /topic/268869&pg=-1#2421411
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587279
andy_h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кувалдин Роман
Вот отсюда все начали кипеть: /topic/268869&pg=-1#2421411

А я отсюда /topic/268869&pg=-1#2421093

Я человека спрашиваю по методы округленя в Java, а он меня посылает изучать численные методы (типа умный).

Рома, вот ты любишь всякие алегории, особенно про рыбалку.
Вот ты приходишь и говоришь: "Научи меня ловить рыбу".
А тебе отвечают:"Иди-ка поучись бамбук для удочек выращивать".

Так и здесь ....
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587283
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy_h
...
Это я и написал в самом-самом начале ...
...

Поэтому и жалко твоего работодателя.

Если ты пишешь так, что тебя все понимают не правильно, значит либо все дураки, либо у тебя что-то не так.

andy_h
Подскажите, каким махером выполнять округление,
чтобы число 13.5465 всё-таки
"превращалось" в 13.547

Почитай, что ты ответил, после того, как тебе показали как это можно сделать.

andy_h
Где здесь про Excel ???

Все ходы записаны.
Вот тут http://www.sql.ru/forum/actualthread.aspx?tid=268869&pg=1#2421715


andy_h
Кусок кода в начале ещё добавил.

Код пишешь ты. Код исполняется всегда правильно. Если в итоге его исполения, ты получил не тот результат что ожидал, то ошибся ты.
Не согласен?

Почему код написанный в начале не делал то, что ты хотел тебе много раз писали.

Это даже больше чем простое "Не, мужик!!! Это делается не так, а вот так!!!".

Но вместо спасибо, ты говоришь совсем другие слова.

andy_h
Нет же ... сразу в библиотеку посылают, или в "любви" признаются.
А по сути - ничего ...

Любовь зла, полюбишь и кого угодно.
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587362
andy_h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUs
...
Почему код написанный в начале не делал то, что ты хотел тебе много раз писали.

Это даже больше чем простое "Не, мужик!!! Это делается не так, а вот так!!!". ...


Ну, если для Вас, молодой человек, диагностика проблемы - это уже её устранение, то ... .
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587412
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy_hРома, вот ты любишь всякие алегории, особенно про рыбалку.
Вот ты приходишь и говоришь: "Научи меня ловить рыбу".
А тебе отвечают:"Иди-ка поучись бамбук для удочек выращивать".
Так и здесь ....

Гы :-) Если я приду и спрошу "Как ловить рыбу?" - меня пошлют читать многочисленные пособия по рыбалке. И правильно. А вот вопрос в духе "на какого мотыля лучше ловятся карпы в подмосковье?" - это уже более сложный и узкий вопрос, и по нему литературы так просто не найти.

Я всегда пишу свои обработчики округления с заданной мне точностью именно по принципу "умножил-отбросил-разделил", так как проблема округления вещественных чисел мне известна еще со времен C++. Боолее того, это общепринятая практика для численных методов - только так ты можешь гарантировать отсутствие погрешности при округлении.
И я никогда не пользовался BigDecimal до сегодняшнего дня. Тем не менее, мне хватило нескольких минут для того, чтобы заглянуть в исходники класса BigDecimal и увидеть там, откуда растут ноги твоей проблемы. Ты мог сделать те же самые шаги. Но почему-то поленился это сделать, а обратился в форум. Согласись, вопрос явно не из серии узкоспециализированных, и недостоин форума, если для его решения нужно полчаса?

Я собственно к тому, что новое поколение (блин, мне всего 25 лет, а я говорю про другое поколение) зачастую хочет достать готовое решение. Это хорошо с точки зрения "сделал и забыл", но ни разу не правильно с точки зрения профессионального роста.

Мне довелось попрограммировать на ассемблере для ZX Spectrum, в основном методом Научного-Тыка. Это был великолепный опыт, к сожалению, не понадобившийся мне в дальнейшем. Из подобных вещей и складывается умение решать проблемы самостоятельно, а также инженерное мышление и спсобность на нестандартные решения. И то, что новые программисты зачастую не знают ничего, кроме паттернов (да и тех толком не знают) - вот что меня беспокоит по-настоящему. И я так думаю - не одного меня.
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587475
andy_h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кувалдин Роман
И то, что новые программисты зачастую не знают ничего, кроме паттернов (да и тех толком не знают) - вот что меня беспокоит по-настоящему. И я так думаю - не одного меня.

Абсолютно с тобой согласен. Более того я уже ранее говорил, что
в Яве новичок. А на форум обратился только потому, что не нашёл стандартного метода и никто из моих знакомых Джаверов ответа не дал. Написать свой метод - это последний вариант, по крайней мере, когда надо сделать и забыть.
Просто ожидал большего от этого языка. Возьми, например, класс String: сколько методов для работы со строкой. В том же Паскале для тех же целей много приходилось писать ручками. Поэтому, отсутствие roundTo(double d, int digit) - несколько обескуражило, неужели трудно было добавить его в Math?
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587487
andy_h
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кувалдин Роман

Гы :-) Если я приду и спрошу "Как ловить рыбу?" - меня пошлют читать многочисленные пособия по рыбалке. И правильно.

И опять-таки, пособие по рыбалке (т.е. по языку Java), а не по ловле мотыля (в данном случае - численные методы)

:-))
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587495
ежемуха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy_hПоэтому, отсутствие roundTo(double d, int digit) - несколько обескуражило, неужели трудно было добавить его в Math?

Наверно, это испортило бы концепцию. Люди бы стали относиться к отображению технического числа с плавающей точкой двойной длины слишком серьезно. Наверно смысл был в том, чтобы сильнее отделить отображение числа от его хранения, чтобы у людей не возникало соблазна хранить в них серьезные десятичные величины типа денег. А так ясно, что десятичное отображение числа с плавающей точкой - это совсем примерная цифра
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587506
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy_hПросто ожидал большего от этого языка. Возьми, например, класс String: сколько методов для работы со строкой. В том же Паскале для тех же целей много приходилось писать ручками. Поэтому, отсутствие roundTo(double d, int digit) - несколько обескуражило, неужели трудно было добавить его в Math?

Ну так и добавили. BigDecimal.ROUND_HALF_UP делает именно то, что тебе надо - если не забывать о косяке округления и делать так, как советуют сами разработчики языка - сначала преобразовать из double в String - это исключит потерю точности.

Вот так надо было написать: new BigDecimal(""+d).setScale(3, BigDecimal.ROUND_HALF_UP));

Да, понимаю, добавили немного не в том месте, где ожидалось... Этому есть свои причины.

Теперь-то можно дискуссию закрывать? Или ты, как и я, не можешь оставить последнее слово за оппонентом? ;-)
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587518
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ежемуха andy_hПоэтому, отсутствие roundTo(double d, int digit) - несколько обескуражило, неужели трудно было добавить его в Math?

Наверно, это испортило бы концепцию. Люди бы стали относиться к отображению технического числа с плавающей точкой двойной длины слишком серьезно. Наверно смысл был в том, чтобы сильнее отделить отображение числа от его хранения, чтобы у людей не возникало соблазна хранить в них серьезные десятичные величины типа денег. А так ясно, что десятичное отображение числа с плавающей точкой - это совсем примерная цифра

Скорее для того, чтобы отделить hardware-dependent значение (double на 32-битных x86, 64-битных AMD и Itanium, маках с прямым порядком байтов etc) от hardware-independent BigDecimal, который по спецификации будет одинаков для всех систем. Например, для меня стало сюрпризом, что int в C++ - это не всегда 32 бита, а в общем-то зависит от разрядности процессора. В таких случаях косяки по переполнению могут полезть в самых неожиданных местах.
...
Рейтинг: 0 / 0
Округление чисел с плавающей запятой!!!!
    #33587594
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy_h
))) Умнейший !!! Что ж Вы всё пишите и пишите, а ответа я так пока не получил. Раз Вы так хорошо разбираетесь в этой теме и жёстко цепляетесь к терминологии. Давайте поступим следующим образом:

1 . Назовём числа 13.5461 и 13.5465 - вещественными .

К сожалению компьтер не умеет работать с вещественными числами только с рациональными представленными в виде числа с фиксированной или плавающей точкой. Все это является элементарными знаниями по численным методам. Тебе рекомендуют их читать не потому что нельзя сделать так как ты хочеш, а потому что задаеш не правильные вопросы.

Потом java оптимизированна под процессоры Sun: UltraSPARC. Т.е. работа с числами в некоторых случаях эмулируется, и поведение совершенно отличается от того как будет работать код тогоже паскаля который исполняется в просессорозависимых командах. Не знаю естли для спарков pascal, но на С++ я на них словил очень интересную ошибку в виде bus error.

По поводу RoundTo, с чего ты взял что поведение аналогичной конструкции в java будет аналогично Pascal?
По поводу Excel могу тебе сказать что там число будет хранится в виде фиксированной точки до тех пор пока это будет возможно по этому сравнение не удачно.
...
Рейтинг: 0 / 0
12 сообщений из 62, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Округление чисел с плавающей запятой!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]