|
|
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. Есть ли гарантия, что для любого входного числа(в данном случае 1) c будет равно a ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 16:38 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
questioner, а может для начала ознакомиться с основами информатики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 16:55 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
questioner, Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:05 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Usmanquestioner, Код: java 1. 2. 3. 4. 5. 6. 7. 8. А! Огонь! Хоть бы вывел a, что ли :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:07 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Usmanquestioner, Код: java 1. 2. 3. 4. 5. 6. 7. 8. за пару минут выполнения пока в консоли пустота) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:14 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
вадяquestioner, а может для начала ознакомиться с основами информатики? Молодец, самоутвердился. Есть что по делу сказать7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:14 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
questionerвадяquestioner, а может для начала ознакомиться с основами информатики? Молодец, самоутвердился. Есть что по делу сказать7 Вадя совершенно прав. https://ru.wikipedia.org/wiki/Число_двойной_точности Мантиса = 52 бита Порядок = 11 бит int = 32 бита Явно в мантису весь int "влезет" и еще место останется. Хотя и вопрос и код выглядят "странно". Я бы так лишний раз не делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:19 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, ну ведь когда мы делаем Код: java 1. то это ж будет не совсем один. я думал, что либо чуть больше, либо чуть меньше. Если чуть больше, то при отбрасывании нулей - всё ок. Если будет чуть меньше, то ведь должно скаститься к нулю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:31 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
questionerну ведь когда мы делаем Код: java 1. то это ж будет не совсем один. я думал, что либо чуть больше, либо чуть меньше. Потому тебе и советуют обратиться к основам- чтобы узнать (и понять причину), что 1 и 0.5 будут точными, а 0.2 - нет :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:35 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Usman Код: java 1. Превышение MAX_INT. Бесконечный цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 17:44 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
JonnySKSUsman Код: java 1. Превышение MAX_INT. Бесконечный цикл.Точно ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 18:00 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
questioner Код: java 1. 2. 3. Есть ли гарантия, что для любого входного числа(в данном случае 1) c будет равно a ? Сходу замечание, что сама по себе постановка вопроса как "равно" не применима к double. Во всех технических ВТУЗ-ах студентам втолковывают весь первый семестр что double, extended, float НЕЛЬЗЯ сравнивать на равенство. Его можно брать на попадание в ОКРЕСТНОСТЬ эпсилон либо жестко гнать по БОЛЬШЕ/МЕНЬШЕ Но вернёмся к котам. Для диапазона int можно считать что кастинг отработает успешно. Но само по себе толкование вещественного числа весьма шИроко и несёт больше смыслов чем int. Например double может фиксировать бесконечности обоих знаков и результат типа "неопределённость" кооторый вроде бы константа но не есть число и может клинить кумулятивные вычисления. По поводу точности. Покури следующий метод https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#ulp-double- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 01:33 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
ТС, используй бигдецимал. дабл вообще сами по себе неточные. )) мне по наследству достался бухпроект где валюты хранились в даблах. это просто жесть. делишь 10 на 4 а в ответ: 2.500000000000000000000000001 или 2.4999999999999999991 в итоге приходится в даблах только хранить а для каких то действий делать конверт. хотя это вроде тоже не рекомендуется. но работает вроде без глюков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 07:22 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2... + Сам такое наблюдал не раз. maytonЕсть ли гарантия, что для любого входного числа(в данном случае 1) c будет равно a ? Сходу замечание, что сама по себе постановка вопроса как "равно" не применима к double. Во всех технических ВТУЗ-ах студентам втолковывают весь первый семестр что double, extended, float НЕЛЬЗЯ сравнивать на равенство. Его можно брать на попадание в ОКРЕСТНОСТЬ эпсилон либо жестко гнать по БОЛЬШЕ/МЕНЬШЕ [/quot] И даже если это небольшое "лукавство", лучше этому правилу следовать. Полностью с преподавателями согласен. Иначе в реальной жизни получается жесть как у lor2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 11:21 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2... + Сам такое наблюдал не раз. maytonСходу замечание, что сама по себе постановка вопроса как "равно" не применима к double. Во всех технических ВТУЗ-ах студентам втолковывают весь первый семестр что double, extended, float НЕЛЬЗЯ сравнивать на равенство. Его можно брать на попадание в ОКРЕСТНОСТЬ эпсилон либо жестко гнать по БОЛЬШЕ/МЕНЬШЕ И даже если это небольшое "лукавство", лучше этому правилу следовать. Полностью с преподавателями согласен. Иначе в реальной жизни получается жесть как у lor2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 11:23 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2, Отсюда и вопрос то возник. может вроде как больше и меньше быть. немножко. Но на практике для целых чисел добиться этого не удалось. Есть этому теоретическое объяснение или я просто плохо пробовал? P.S. в apache commons либе увидел код, в котором double приводят к int ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:06 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:18 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
questioner...Есть этому теоретическое объяснение или я просто плохо пробовал?... Точность мантисы (52 бита) в double намного больше, чем размерность int (32) И то и то в существующей реализации работает по степеням 2'ки. Т.ч. потеря точности на целых числах взяться не откуда. Но в _существующей_ реализации и _только_ в твоей постановке вопроса (сферический конь в вакууме). В реальной жизни (если конь не такой сферический и/или вакуум не полный) - mayton и преподаватели полностью правы. 1) Long в double уже не влезет. 2) При работе с дробями. В арифметики с фиксированной точкой, скорее всего понадобятся степени - 10-ки, а в double - степени 2-ки. Можно нарваться на кучу приятных моментов. 3) При арифметических операциях. Правила "округления" для int и double будут полностью разные. 4) Смысла заменять int на double ... с ходу придумать сложно: 3.1. int занимает меньше места 3.2. int должен работать намного быстрее Т.ч. практический смысл твоего вопроса, применительно к _реальной_ жизни, не понятен. P.S. в apache commons либе увидел код, в котором double приводят к int 1) Показывай код и место, где его применили. 2) На заборе написано "х#й" - а там дрова лежат! И что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:25 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
P.S. Ну и степень 2 для представления мантисы/порядка тоже, в общем, не гарантирована. 1) Например float в IBM 360 - работал по степени 16 2) Беглым поиском по I-net находится, что в Python'е бывает " decimal floating point arithmetic" Т.ч. задаваясь настолько глубокими "философскими" вопросами - в код их тащить не стоит. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:33 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
я вот одного не понимаю чо неужели за столько лет не могли создать нормальный адекватный примитив чтоб подобного секса не было? ведь даже с бигдецималом относительно длинная цепочка элементарных математических действий по внешнему виду превращается в нечто монструозное для вяких фриков-красноглазиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:41 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2я вот одного не понимаю чо неужели за столько лет не могли создать нормальный адекватный примитив..... За столько лет, про него просто забыли ))) 1. Дремучая древность техники. Проблем нет: IBM / 360 - содержит аппаратную поддержку BCD типа. PL/1 разумеется, про него все знает: "...The data type of arithmetic values is expressed using the following attributes: FIXED BINARY(p) and FIXED DECIMAL(p,q) for fixed-point data FLOAT BINARY(p) and FLOAT DECIMAL(p) for floating-point data ..." 2. Юность ))) Intel 8086 - содержал минимальный набор команд для поддержки BCD (нормализация данных) Basic, Pascal, Logo - кто же на них серьезно обращал внимание))) это так, для школьников/студентов C - это вообще язык для написания переносимой ОС. Про бухгалтерию и BCD возможно никто и не думал. Серьезные БД - Oracle. Проблем нет. Number БД для ПК - dBase. Проблем нет. Number = Fixed point арифметика. Про float (в файле на диске) даже и не знает 3. Современность Студенты с горящими глазами и ООП на плакатах - нафиг им бухгалтерия и BCD ? Им бы космические корабли запускать и виртуальные методы виртуалить PostgreSQL и прочие современные БД - как же без любимого Pascal'евского float в БД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:08 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2ведь даже с бигдецималом относительно длинная цепочка элементарных математических действий по внешнему виду превращается в нечто монструозное для вяких фриков-красноглазиков.К сожалению нет перегрузки операторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:14 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
и еще тупой вопрос всё руки никак не дойдут попробовать )) я делаю на спринг жсп форм:форм, и забираю какой то объект, в котором есть поля бигдецимал )) они с хтмл формы нормально заберутся и сразу сконвертятся в бигдецимал или надо будет долбаный форматтер городить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:33 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Перегрузка операторов проблем с "убожестью" языка не решает, а только усугубляет. Если 5 + 10 * 4 - 3 будет выливаться в неявные: new BigDecimal( new BigDecimal( new BigDecimal( 5 ) + new BigDecimal( new BigDecimal( 10 ) * new BigDecimal( 4 ) ) ) - new BigDecimal( 3 ) ) это назвать "красивым решением" IMHO никак нельзя. Если со строками элегантного решения все равно нет (память под строку все равно нужно выделять), то потеря скорости на иммутабле объектах для BCD (вся бухгалтерия) или при работе с датами (куча задач) - выглядит мягко говоря... не очень элегантно Сейчас нужно обсчитывать данные с датами. Перешел на joda date, т.к. проводить вычислений с immutable объектами - крайне расточительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:38 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2я вот одного не понимаю чо неужели за столько лет не могли создать нормальный адекватный примитив чтоб подобного секса не было? ведь даже с бигдецималом относительно длинная цепочка элементарных математических действий по внешнему виду превращается в нечто монструозное для вяких фриков-красноглазиков. В твоих словах скользит боль и злость и обида новичка который еще в чем-то не разобрался. BigDecimal имеет перегруженные операции в языках Groovy, Kotlin. Если действительно так припекло с бухгалтерией то можно часть расчетов описать на другом ЯП а потом заюзать в Java (как это сделать практически я щас не буду обсуждать но впринципе возможно). Тость пути устранения твоей злобы - существуют. Почему изначально не было создано примитивного типа такого как decimal в C# - это сложный вопрос. Не на одну страницу. Возможно Гослинг считал что для программирования мобилок и пультов ДУ для телевизоров (ага это был 1996 год) нет смысла усложнять язык и вводить туда примитивы которые сложно будет поддержать железом. Поддержать алгебраический INT32 - легко почти на любом железе. А ломать language compatibility впоследствии уже никто не хотел. Поэтому класс остался классом а примитив - примитивом. Туда-же лесом ушли вопросы атомарностей, синхронизаций и прочего что инженеры считали целесообразным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:59 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevПерегрузка операторов проблем с "убожестью" языка не решает, а только усугубляет.Перегрузка операторов - это одна из необходимых фич, которые нужно добавить в Java. На пару с implicit - выглядит очень даже красиво и намного читабельно.Leonid Kudryavtsevnew BigDecimal( new BigDecimal( new BigDecimal( 5 ) + new BigDecimal( new BigDecimal( 10 ) * new BigDecimal( 4 ) ) ) - new BigDecimal( 3 ) ) decimal имхо !Консерватизм Javы породил C#, Groovy, Scala... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:09 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
mayton, да не новичка. Просто "универсальные языки" стали везде использовать (пихать!) для решения задач, которые всю жизнь решались специализированными языками. Как следствие - дофига корявого кода, не эффективность и детские ошибки (типа float для денег). Плюс. Что, возможно, много хуже. Создатели данных "универсальных решений" стали считать себя гуру и свое корявое решение с упорством и с успехом пропихивать туда, где до них было все хорошо Мигрировал БД из PostgreSQL в Oracle. Там ID-шники (!) были float. Почему так, не знаю. Но для меня выглядело диковато. И это не студенческая поделка. А достаточно успешная учетная система, эксплуатирующаяся у одного из наших гигантов и столпов экономики. ORM. Создатели ООП решили "свое видение" привнести в БД. При этом, очень похоже, что знание СУБД (которым уже не один десяток лет) у них были около нуля. В результате скрещивания ужа и кактуса получается "10 метров колючей проволоки". При том, что изначально, оба животных вполне себе безобидные и, в чем-то, даже полезные. Куда в IT не посмотришь - везде примерно так. Вроде идеи по отдельности здравые, хорошие и полезные - но их бездумное объединение (чаще по историческим причинам) такой бардак и помойка.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:17 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Зло в перегрузке, а тем более в implicit, что оно скрывает от программиста как же реально его код будет выполняться. Да, возможно, в 90% случаев, это приводит к "выглядит очень даже красиво и намного читабельно". Но в 10%, может привести к полной помойке и бардаку. Т.к. где, что и во что "неявно преобразовалось" - фиг найдешь. В общем "при использование в меру" вещь хорошая и полезная. Но примеров бездумного использования новомодных фич - как грязи. Я бы даже сказал, Java-программисты страдает от этого намного больше, чем любые другие программисты ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:25 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
нененене, и чо и чо? и чо делать то в бухсофте? "вставки на другом языке" это простите, эээээ. а накой тогда ява нужна? давайте на руби и пхп бух софт писать а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:44 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
JavaScript AFAIK использует вещественное представление вообще для всех счетных типов. Но это упрощение заложеное еще на этапе создания самой машины. И оно работает только внутри JavaScript. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:44 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
maytonJavaScript AFAIK использует вещественное представление вообще для всех счетных типов. Но это упрощение заложеное еще на этапе создания самой машины. И оно работает только внутри JavaScript. я не думаю, что это хорошая идея делать вычисления в бухе на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:47 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2нененене, и чо и чо? и чо делать то в бухсофте? "вставки на другом языке" это простите, эээээ. а накой тогда ява нужна? давайте на руби и пхп бух софт писать а? 1C ))) При всем богатстве выбора.... p.s. Сам на 1С не писал и писать не буду. Язык где операторы по русски - извините, но мне "пошел на" и в реальной жизни хватает. Можно хоть в компьютере будет англоязычное "goto" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:49 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2maytonJavaScript AFAIK использует вещественное представление вообще для всех счетных типов. Но это упрощение заложеное еще на этапе создания самой машины. И оно работает только внутри JavaScript. я не думаю, что это хорошая идея делать вычисления в бухе на клиенте. Клиент эволюционирует. Я лет 10 назад тоже считал JS недо-языком годным лишь для проверки формочек перед постом. Но сегодня на нем делают игры и медиаконтент и сам по себе вопрос "ахах дескыть хто разрешил и как это мона" уже не звучит. Все привыкли. Надежность устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:55 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, по бухе я долго ковырял эту тему. вариантов не много: или бигдецимал и его угребищные выражения на птичьем языке, или же целочисленные копейки (центы, тугрики, куруши и т.п.) (он же инт) с последующим переводом во что-нибудь что два знака после запятой показывать умеет. оба варианта на мой взгляд уродские костыли. ну либо третий вариант - мас.раунд и теоретически куда-нибудь девающиеся копейки в случае объемных вычислений. я всё же не понимаю как там в больших корп. проектах это всё считается? неужели бигдецимал? или вообще тупо арифметику в скуль перетаскивают? )) тогда зачем хибер и эти неясные скрещивания ужей с ежами (из соседней темы)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:56 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
maytonlor2пропущено... я не думаю, что это хорошая идея делать вычисления в бухе на клиенте. Клиент эволюционирует. Я лет 10 назад тоже считал JS недо-языком годным лишь для проверки формочек перед постом. Но сегодня на нем делают игры и медиаконтент и сам по себе вопрос "ахах дескыть хто разрешил и как это мона" уже не звучит. Все привыкли. Надежность устраивает. я нисколько не сомневаюсь в возможностях жса кроме того я полагаю что по сложности и объемности знаний жс ничем яве не уступает. тут вопрос именно безопасности )) типа чел возьмет и в клиенте сам себе расчет зп подкрутит. помню раньше игра такая была ил2 штурмовик, забытые сражения по сети в нее резались (кстати, на яве сделанная, уже тогда - 2004-й год емнип) так вот, там попадания вычислялись на КЛИЕНТЕ. т.е. ты стреляешь в чувака, а попал-не попал считается не у него или на серваке, а у тебя. так вот, я просто залез в базу моделей повреждения и у всех вражеских самолетов поставил броню ноль. одна пуля рвала самолет врага как тузик грелку. крылья там отваливались и т.п. это я к чему - думаю ясно к чему. :) нехорошая это идея в общем. я понимаю если какие-то там отчеты индикативные готовить, а если критические вычисления - то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 15:00 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2я всё же не понимаю как там в больших корп. проектах это всё считается? неужели бигдецимал? или вообще тупо арифметику в скуль перетаскивают? )) тогда зачем хибер и эти неясные скрещивания ужей с ежами (из соседней темы)? Ты щас всё спутал и смешал в одну кучу. При чем тут хибер вообще? Ты что с хибером что без него видишь один и тот-же ResultSet. По поводу как считают. Один чел который писал логику для фондовых бирж (hiload) говорил (и я гарантирую это ибо знакомый) что они для денег используют long (64bit) и в целых числах (копейках или центах) в зависимости от валюты. Код валюты тут-же кладётся рядом в class (record, datarow). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 15:04 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
lor2я всё же не понимаю как там в больших корп. проектах это всё считается? Oracle Customer Care & Billing - Big Decimal. Пред. версия и часть вычислений на Cobol'е. ГИС ГМП - AFAIK копейки (какой язык не знаю) Google Flight - копейки, центы (какой язык не знаю) lor2или вообще тупо арифметику в скуль перетаскивают? Oracle OeBS - Вся логика на PL/SQL, на Java только часть морды. Через что отображают деньги - не помню. Но у них OAF/ADF, скорее всего BigDecimal. lor2тогда зачем хибер и эти неясные скрещивания ужей с ежами (из соседней темы)? Модно, весело и молодежно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 15:06 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
maytonlor2я всё же не понимаю как там в больших корп. проектах это всё считается? неужели бигдецимал? или вообще тупо арифметику в скуль перетаскивают? )) тогда зачем хибер и эти неясные скрещивания ужей с ежами (из соседней темы)? Ты щас всё спутал и смешал в одну кучу. При чем тут хибер вообще? Ты что с хибером что без него видишь один и тот-же ResultSet. По поводу как считают. Один чел который писал логику для фондовых бирж (hiload) говорил (и я гарантирую это ибо знакомый) что они для денег используют long (64bit) и в целых числах (копейках или центах) в зависимости от валюты. Код валюты тут-же кладётся рядом в class (record, datarow). может я костноязычен но суть следующая: щас я допиливаю уже (слава Всевышнему!) проект где используется хибер и скуля нет вообще практически только мелкие вкрапления хкуля да и те особо не нужны. вот у меня встанет задача избавиться от дабла и бигдецимала и претащить всю арифметику в скуль - эээ я даже близко не представляю какой же это будет костылище, а так всё "быстро, красиво, молодежно" и по ооп )) ну.. в принципе исходя из сообщения предыдущего оратора, да и то что я сам говорил: или считаем в копейках, или ужасный бигдец. просто с даблами всё так красиво выходит, структурированно и по оопшному - ты и из формы циферки вынимаешь и если надо обсчеты, относящиеся ко вьюшке делаешь как положено во вьюшке жсп-ой и т.п., в коде так же а+б/ц и т.п. а если пользовать бдц или копейки то появляются долбаные костыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 15:20 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
mayton...что они для денег используют long (64bit) и в целых числах (копейках или центах) в зависимости от валюты. Код валюты тут-же кладётся рядом в class (record, datarow) Оно конечно хорошо, но подозреваю, для целого ряда применений может быть не достаточно. Т.к. например курсы валют считаются с большей точностью, чем 2-а знака после запятой. Да и с точки зрения эстетики, это выглядит донельзя корявым. Рубль изначально и возник как "счетная единица". Такой монеты еще не было, а понятие рубль для феодальной отчетности ))) /поскольку бухгалтерию еще тоже не придумали/ уже было. А тут прогресс... копейками считаем. Кроме того, нужно привязывать точно знаков вывода после запятой к валюте. Не хилое усложнение форматирования. Не все валюты основаны по основанию 100, википедия уверяет: "...1 тунисский динар — 1000 миллимов... Мавритания, где угия делится на 5 хумсов, и Мадагаскар, чья национальная валюта ариари состоит из 5 ираймбиланья." Т.ч. форматирования для вывода и/или отладка - будет еще та себе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 15:25 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Возможно в тех биржевых операциях важнее была компактность хранения и базовая ариметика типа там сложить или сравнить на больше или меньше. Не возражаю против перевода валют но очевидно что оптимизация шла в сторону наболее частых операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 15:39 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev P.S. в apache commons либе увидел код, в котором double приводят к int 1) Показывай код и место, где его применили. класс Fraction имеет билдер(не тот, что в GoF), который принимает только double Код: java 1. Мне надо сравнить мою дробь с целым числом. приводить цело число к дроби, со знаменателем 1 ну как-то не очень красиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 16:04 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
есть Код: java 1. который принимает double и внутри они дабл кастят к инту. а для просто инта - нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 16:06 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
questionerесть Код: java 1. который принимает double и внутри они дабл кастят к инту. вижу следующий код: Код: java 1. 2. 3. 4. 5. Что и зачем делают - вроде все понятно. Будет ли эквиваленты вызовы: getFraction( (double)1.0 ) и getFraction( "1" ) - на мой взгляд да Преобразование int -> double -> int при отсутствие арифметических операций и одном и том же основании счисления (2) должно быть безопасно. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 16:30 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevquestionerесть Код: java 1. который принимает double и внутри они дабл кастят к инту. вижу следующий код: Код: java 1. 2. 3. 4. 5. Что и зачем делают - вроде все понятно. Будет ли эквиваленты вызовы: getFraction( (double)1.0 ) и getFraction( "1" ) - на мой взгляд да Преобразование int -> double -> int при отсутствие арифметических операций и одном и том же основании счисления (2) должно быть безопасно. IMHO ИМХО тоже, только меня смутило, что какого-то 100 пудового доказательства в глубине души я не смог придумать. ну и + 1 может же стать 0.99999999999999999999 или нет таки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 20:13 |
|
||
|
int ->double->int - потеря точности.
|
|||
|---|---|---|---|
|
#18+
делать было нечего и я проверил: спринг просто прекрасно принимает с текстовго поля формы значение цифровое и автоматом его переводит в бигдец. кроме того если этот бигдец отправлять обратно во вьюшку то там с ним можно вполне свободно стандартыми способами крутить-вертеть в жспшках как хочешь, типа ((бигдец1+бигдец2)/бигдец3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 23:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2124227]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 395ms |

| 0 / 0 |
