Alexandr
в java разве не принято работать с финансами через Bigdecimal?
Бигдецимал используют только, когда не хватает дабла. А это ну очень большие числа. В мире нет столько финансов)
Bogdan
там же ещё прикол с округлением есть
Bogdan
Бигдецимал используют только, когда не хватает дабла. А это ну очень большие числа. В мире нет столько финансов)
хотя ладно, просто в шарпе например для финансов использовать не decimal не лучшая идея, думал в джаве так же
Natalia
Если правильно понимаю, ID у тебя - целое число, там не надо округлять, а Баланс - округляется до 2го знака после запятой (копейки). Тебе вполне должно хватить дабла
Alexandr
Natalia
Мне кажется это разные люди с котами на аватарках)))
Да блин))) точно, в 0:30 мой мозг отключилсо))) пора спатки
Alexandr
не понял прикол но ладно
Посмотри профиль и код чувака с конструкторами, и всё поймёшь
Bogdan
ааа блин
Bogdan
я даже не обращаю обычно внимание на аватарки, я пролистываю их
Bogdan
ладно надо будет почитать в джаве по этой теме как устроено ибо в дот нете (мне так проще чем шарп называть) decimal исключает ошибки округления
Alexandr
ладно надо будет почитать в джаве по этой теме как устроено ибо в дот нете (мне так проще чем шарп называть) decimal исключает ошибки округления
Потому что Майкрософт учли косяки жавы и сделали свою, с б̶л̶е̶к̶д̶ж̶е̶к̶о̶м̶ ̶и̶ ̶ш̶л̶ю̶х̶а̶м̶и̶ ̶ преферансом и поэтессами. И назвали С#
Bogdan
короче я так понял один из самых распростроненных вариантов это хранить лонг, а дальше просто делить в процессе
Bogdan
ну или так
Alexandr
короче я так понял один из самых распростроненных вариантов это хранить лонг, а дальше просто делить в процессе
Нет, смотря для чего тебе нужно. Если важно количество знаков после запятой, то флоат, если большое число, то дабл
Mikhail
Не во всех валютах 1 у.е. = 100 мелких у.е.
Alexandr
Каждый тип данных для своей цели предназначен
Bogdan
э стоп
Alexandr
А для вывода в жаве используется форматирование
Bogdan
флоат для денег вообще не рекомендуется не в одном языке насколько я знаю
Bogdan
ибо он очень криво округляет
Alexandr
Я не о деньгах сейчас
Bogdan
ааа ну если в целом то это понятно
Alexandr
Вообще лучше смотреть как люди делают, а не изобретать велосипед
Bogdan
Вообще лучше смотреть как люди делают, а не изобретать велосипед
ну люди и делают либо с помощью лонга либо бигдецимала
Alexandr
Для любой суммы денег достаточно дабла
Bogdan
по крайней мере так на стэковерфло пишут
Alexandr
Это на шарпе?
Bogdan
нет
Bogdan
в шарпе есть decimal, тут редко что то другое используют для финансов
Bogdan
да и зачем, у децимала высокая точность и диапазона более чем достаточно
Alexandr
Чувак, дабл хранит числа до ±1.8*10 в 308 степени. Всё что не влезает, пишется в БигДецимал. Ты представляешь насколько это дохрена?
Bogdan
я знаю, но тут в другом прикол
Bogdan
тут прикол в том что дабл имеет косяки в округлении
Руслан
Привет.нет, это не тот)))))
Bogdan
и лучше тогда уж хранить копейки и целые отдельно
Alexandr
Можно свой тип данных написать, который будет хранить только рубли и копейки в целых числах
Bogdan
а ещё там прикол в том что дабл не умеет в отрицательную степень от 10
Руслан
Руслан, приветствую. Какого Артема ищешь?)
Привет. Артем из алмааты.но он вроде школу заканчивает.ему 16-17 лет
Mikhail
Для любой суммы денег достаточно дабла
Java: double sum = 5.6; sum += 5.8; System.out.println(sum); // 11.39999999999999
Bogdan
что дабл будет очень херово округлть
Bogdan
поэтому дабл лучше исключать из финансовых расчетов
Mikhail
А потом рассказывай кастомеру, куда делась его копейка. Или в налоговой, лол.
Bogdan
есть даже книга вроде какая-то почему нельзя использовать double для финансов
Mikhail
есть даже книга вроде какая-то почему нельзя использовать double для финансов
Мне все же кажется, что тема не такая объемная, чтоб отдельную книгу писать.
Bogdan
а если говорить о джаве, то я вроде встречал такие отсылки в Джошуа Блохе (я не помню как точно читается его фамилия)
Bogdan
в Эффективной джаве
Alexandr
Чуваки, если работаете с баблом, то используйте кастомный класс, который работает с целыми числами. По ходу учите его делить, вычитать проценты
Bogdan
и флоат
тут в другом прикол
Bogdan
флоат вообще никто не использует для этого
Bogdan
В Java есть класс Currency.
это в 8 версии появился?
Пашок🗽
флоат вообще никто не использует для этого
Флоат вообще никто не использует 😂
Bogdan
Флоат вообще никто не использует 😂
использует если не нужна точность
Пашок🗽
Как и шорт например)) и чар почти
giorgio
флоат вообще никто не использует для этого
естественно. это я к тому, что эти два типа имеют слишком серьёзную погрешность для финансовых дел
Bogdan
ну шорт да, тут приколы есть такие...Типо казалось бы лучше использовать его для циклов, но все по прежнему пихают инт\
Пашок🗽
Мб глупо байты считать 🤷‍♂
Bogdan
мне кажется это ещё со времен плюсов зародилось и си
Mikhail
это в 8 версии появился?
Недописал, сорян, Currency + BigDecimal используется. Либо какой-нибудь JodaMoney.
Bogdan
естественно. это я к тому, что эти два типа имеют слишком серьёзную погрешность для финансовых дел
ну дабл к сожалению используют те кто этого не понимает, а за флоат можно убивать
giorgio
float просто меньше занимает
Bogdan
типо если с дабл пропадут копейки и всё ещё не так трагично, то вот с флоатом пропадёт слишком многое
Bogdan
ладно я встречал где-то ситуацию где работу с финансами даже в транзакцию не обернули
Bogdan
я вот представляю что будет если пустить финансы по флоату и без транзакции, тупо такой лям пропал, а это не наши проблемы
Alexandr
Мб глупо байты считать 🤷‍♂
Я кодил на микроконтроллерах, там каждый байтик экономишь. Байт вместо инт, чар вместо стринг. А насчёт дабл два раза подумаешь, нужен ли он тебе)
Alexandr
микроконтроллеры на чем кодил
На С подобном языке, AVR студия
Bogdan
я просто и думаю на Java можно не лучшая идея
Bogdan
типо то что он создался для холодильника не делает его идеальным для работы с железом
Bogdan
на ардуинке например
ну там очень ограничены ресурсы
Alexandr
на ардуинке например
Я сам паял ардуины)