![]() |
|
||||||||||
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Сначала задал вопрос в общем разделе, но прошло время и я склонился к мысли, что это уже для раздела связанного с кодом.
Простой пример - сделал я калькулятор или что то, что предназначено для счёта и пользователь начинает считать - var a:Number = 0.030000000000001137; var b:Number = 0.03; trace(a-b);//1.1379786002407855e-15 Как мне получить ожидаемый результат? И это я измеряю таймер, в котором даже такие значения очень важны. И округлять int, uint нельзя и RegExp тоже нельзя цифры резать... Как быть? я только обрадовался, что закончил с плавностью и распределением скачков ( считал, что сегодня доведу до ума ), но а теперь я вообще не знаю, как это можно сделать. И даже если перевести счёт в милисекунды ( без деления на тысячу ), тоже самое. Только выявить сложнее, но ошибка остается. Добавлено через 7 минут И программа воспринимает число 1.1379786002407855e-15 не как 0.000000000000001137, а как полтора. |
|
|||||
|
Цитата:
А вопрос не возникал почему все функции работы с временем в интовых миллисекундах? По твоему вопросу - ничего с этим не поделаешь. Нужна точность больше - умножай на 10-100-1000, но лучше в итоге прийти к работе с целыми.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Цитата:
Какие проблемы? Добавлено через 6 минут Если вы делаете не гомеопатический калькулятор, такие порядки не должны быть важны. Если это случилось, то это означает, что логика не верна. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
|
|
|||||
|
Цитата:
У первого числа точность намного выше, чем у второго. У второго точность всего 4 знака, а у первого 17. В данном случае в первом числе мантисса равна 11379786002407855, а во втором 0000000000000001137. Вы же не пишете целое число 2 как 0000000002, хотя в целом оба варианта правильные. Таким же образом экономится ограниченная память, которую отводят под число, опуская незначащие нули и заменяя их порядком числа в виде e-15 (то есть мантисса умноженная на десять в степени, которая указана после e, в данном случае мантисса умножить на десять в степени минус 15) На самом деле все задаваемые вами вопросы уже миллион раз решены и расписаны, просто нужно не полениться поискать. Обычно на форум пишут в случае, когда неделя упорных поисков и проб не дают никаких результатов |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
KumoKairo Спасибо за обьяснения!
Цитата:
|
|
|||||
|
Цитата:
Наверное ни сколько не преувеличу, сказав, что это самый полезный ресурс для программиста. Там находятся ответы процентов на 95 всех вопросов, четко и без лишней воды. Ну а по поводу мантиссы http://ru.wikipedia.org/wiki/%D0%A7%...82%D0%BE%D0%B9 п.с. Так же очень советую почитать книжку SCJP Sun Certified Programmer for Java 6. Книжка хоть и по джаве, но там очень подробно рассматриваются вопросы типа "как это работает?" почитав её, многое поймете и об ас3. На русском этой книги не встречал, но, видимо это и не нужно, так как экзамен сам в любом случае только на английском. |
|
|||||
|
listener
|
Akopalipsis, давно пора пройти ликбез. Курсы там каке-нибудь, можно онлайн, или просто почитать что-то отвлеченное от AS, ООП и прочей шняги. Потратьте недельку-другую-третью на основы: представление данных, работа с памятью, алгоритмы, библиотеки, девелоп-окружение (редакторы-компилеры-линкеры-дебуггеры). Незамутненное понятие обо всем таком может дать изучение основ Си, по крайней мере взять как отправную точку можно. Ибо оттуда многи ноги растут, сами увидите. Без обид
.Если решитесь, настоятельно рекомендую изучать это все под никсами. И настоятельно рекомендую консольный режим . |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|