|
|
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
возможно без компилятора предсказать результат выполнения такого выражения? Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 21:14 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
забыл ник, научишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 21:25 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
вроде как если дробная часть без потерь переводится в 2 СС, то будет тру, а в остальных случаях по разному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 21:35 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90, У меня такой результат: Код: java 1. 2. redwhite90возможно без компилятора предсказать результат выполнения такого выражения?С типом double не получится. (имхо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 21:46 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
Usman, вроде как по последней значащей цифре мантиссы это определяется( хотя не уверен) во всяком случае эта версия объясняет разные результаты для float и double. P.S. Код: java 1. 2. 0.5 переводится в 2 СС без потерь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 21:53 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
rdm, да, проблема та, но это не ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 22:04 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
вам уже намекнули что правильный ответ такой - Числа с вещественной точкой сравнивать через == нельзя Точка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 23:19 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90, дело в том что дробно-десятичная константа не мапиться в double и float как один к одному. Там будет аппроксимация дробной части к наиболее близкому числу. Поэтому само по себе присвоение уже имеет дефект точности. Чтобы избежать дефектов сравнения договорились сравнивать как Код: java 1. Где эпсилон ты сам задаёшь как критерий точности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 23:25 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
mayton, забыл_ник я это знаю. просто был вопрос в тесте такой...могу предположить, что и на scjp такой может быть. собственно ответ там данный, что если реально без потерь перевести дробную часть в двоичную систему счисления - будет тру - я не смог опровергнуть. А если нет, то оказывается тоже иногда будет true. Хочу узнать возможно ли в уме прикинуть когда true, когда false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 00:49 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
В уме трудно прикинуть чему будет равно 1.0/3.0 в float, double представлении, поэтому заниматься этим не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 00:57 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Как я унал недавно на quizful, чтобы узнать, представляется ли десятичная дробь конечной двоичной, нужно перевести ее в обычную дробь, сократить и посмотреть является ли знаменатель степенью двойки. И сама степень скажет сколько дробных разрядов надо. 0.3 = 3/10 - конечным не получается 1/10 - тоже т.е. ни 0.3 не будет точным, ни 0.1 в итоге изза последнего разряда оно не сойдется и будет false из примеров ниже, 0.5 = 5/10 = 1/2 -- число запишется точно Сумма пяти 0.1 будет округлена до 0.5 скорей всего, так что true ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 01:04 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
chabapok, ну а 0.2 - не переводится в 2 сс, но результат true ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 02:35 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 08:53 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90, 0.2 = 2/10 = 1/5 5 не степень двойки, значит конечным числом не представляется А true тут не при чем. Это уже к сложению относится - надо смотреть чего там с младшим разрядом получится. Хз как это посмотреть. Но в тестах должно даваться то, что можно в уме предугадать. (не знаю можно ли понять тут, лично я понять не могу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 12:22 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
Usmanredwhite90, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. если честно не понял, что я должен тут увидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 13:26 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
chabapokredwhite90, 0.2 = 2/10 = 1/5 5 не степень двойки, значит конечным числом не представляется А true тут не при чем. Это уже к сложению относится - надо смотреть чего там с младшим разрядом получится. Хз как это посмотреть. Но в тестах должно даваться то, что можно в уме предугадать. (не знаю можно ли понять тут, лично я понять не могу) источник вопроса http://www.quizful.net/TestStoreAction.viewQuestion?question=UOcsHuSsfIa2#5558656655373698788 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 13:27 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90если честно не понял, что я должен тут увидеть.Увидеть разницу! Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: java 1. 2. 3. 4. 5. 6. 7. 8. P.S. Хотелось донести тот факт, что BigDecimal работает с вещественными числами намного предсказуемее . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 13:40 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
UsmanХотелось донести тот факт, что BigDecimal работает с вещественными числами намного предсказуемее . тяжело не согласиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 19:13 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90источник вопроса... вот тут еще можно похожий вопрос посмотерть - www.quizful.net/TestStoreAction.viewQuestion?question=BM85bA43XmMK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 15:57 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
chabapok, пожалуй даже сюда запостю: авторpublic class Main { Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ответ: 1: Float.valueOf(value) дает 29.1f. Далее 29.1f приводится к double т.к. 1.0 имеет тип double (по-умолчанию все литералы с плавающей точкой имеют тип double). Получаем 29.100000381469727d. Соответственно (Float.valueOf(value) + 1.0)=30.100000381469727d. И в результате (Float.valueOf(value) + 1.0) == 30.1 равно false. 2: Аналогично п.1 только без приведения float к double, все переменные типа double. (Double.valueOf(value) + 1.0) дает 30.1d. И в результате (Double.valueOf(value) + 1.0) == 30.1 равно true. 3: Деление float на ноль не дает ArithmeticException (только деление целого типа на ноль даст ArithmeticException), для таких случаев в классе Float даже определена константа: public static final float POSITIVE_INFINITY = 1.0f / 0.0f; Причем если заглянуть в исходники метода java.io.PrintStream#println(float), то становится ясно что float превращается в строку с помощью метода String.valueOf(float), который POSITIVE_INFINITY преобразует в "Infinity". 4: Аналогично п.3. } Что скажете? разве правда? Если даже следовать его логике, то 29.1 не переводится в двоичную CC => 29.1 +1 не равно 30.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2014, 14:15 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
redwhite90, для меня это такая же тайна, покрытая мраком. Правил перевода float -> double я не нашел, но судя по личным тестам, "новые" биты заполняются рандомными значениями. Реверс-инженирингом не получается понять чего оно так работает, а документации не нашел. причем, по всей видимости, тут java вообще не при чем, надо смотреть стандарт IEEE-754 Пока я не могу обьяснить почему оно так работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2014, 15:40 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
Не должно быть там ничего рандомного. Посмотрите как работает онлайн калькулятор для IEE 754 для 32-х битных вещественных чисел. http://www.h-schmidt.net/FloatConverter/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2014, 15:45 |
|
||
|
предсказуем ли результат?
|
|||
|---|---|---|---|
|
#18+
У этого формата нет запрещённых комбинаций но есть маска при которой число являеся Не-числом (Nan) двух подвидов и бесконечность (Infinity) со знаками "+" и "-" Тоесть из 4 млрд состояний float числа небольшая часть будут иметь смысл. И область допустимых значений на всём диапазоне - неравномерна. Тоесть чем больше число - тем грубее идёт шаг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2014, 17:36 |
|
||
|
|

start [/forum/topic.php?fid=59&startmsg=38537888&tid=2127720]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
329ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 689ms |

| 0 / 0 |
