|
|
|
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 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39200014&tid=2124227]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 417ms |

| 0 / 0 |
