14.04.2010, 16:44
|
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Спасибо за быстрый ответ, Я действительно сам начал писать ее, привык к CVAR, где эта функция была, ну, думаю если ИАР круче значит и тут д олжно, день извел на курение Хелпов, а ее действительно нет! Если-б не ВЫ я-б укурился.
переписал прямо из Википедии - заработало, Спасибо!
Цитата:
|
sprintf вполне справляется с такой операцией.
|
тоже очень здорово!
только смущает нюанс: дробные числа обрезаются после 6 знака после запятой,
А как можно повысить точность представления чисел? мне ВАЖНО 9-12 цифр после запятой
Последний раз редактировалось diglook; 14.04.2010 в 18:37.
|
|
|
|
14.04.2010, 19:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от diglook
|
Спасибо за быстрый ответ, Я действительно сам начал писать ее, привык к CVAR, где эта функция была, ну, думаю если ИАР круче значит и тут должно, день извел на курение Хелпов, а ее действительно нет! Если-б не ВЫ я-б укурился.
переписал прямо из Википедии - заработало, Спасибо!
тоже очень здорово!
только смущает нюанс: дробные числа обрезаются после 6 знака после запятой,
А как можно повысить точность представления чисел? мне ВАЖНО 9-12 цифр после запятой
|
Умножь на миллион все числа
|
|
|
|
14.04.2010, 19:22
|
|
Прохожий
Регистрация: 22.11.2009
Сообщений: 7
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Действительно, проще написать, мне понадобилась такая функция, в Keil ее не нашел, набросал сам, строк 10 вышло.
|
|
|
|
15.04.2010, 11:06
|
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
мне ВАЖНО 9-12 цифр после запятой
Цитата:
|
Умножь на миллион все числа
|
т.е. вначале умножить на миллион все переменные, произвести вычисления, и разделить на миллион? А поизящней ничего? быть может есть какие-то настройки опредиления которые ограничивают кол-во цифр после запятой, мне нестолько отображение сколько вычисления над числами у которых важны цыфры после запятой 9-12, а в дальнейшем может и больше.
|
|
|
|
15.04.2010, 12:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от diglook
|
мне ВАЖНО 9-12 цифр после запятой
т.е. вначале умножить на миллион все переменные, произвести вычисления, и разделить на миллион? А поизящней ничего? быть может есть какие-то настройки опредиления которые ограничивают кол-во цифр после запятой, мне нестолько отображение сколько вычисления над числами у которых важны цыфры после запятой 9-12, а в дальнейшем может и больше.
|
Вообще говоря любая софтовая эмуляция дает большую погрешность.
Если нужно 9-12 цифр бери проц с хорошим FPU, либо умножай,либо и то и то.
|
|
|
|
15.04.2010, 12:41
|
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Цитата:
|
Если нужно 9-12 цифр бери проц с хорошим FPU, либо умножай,либо и то и то.
|
Причем здесь FPU? мне не в гонки играть, и расчет не критичен по времени, критично разрешение расчетов, LPC 2478 ведь 32 битный, также как и Пеньтиум. Тут ограничения компилятора. И их нужно как-то расширить.
|
|
|
|
15.04.2010, 13:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от diglook
|
Тут ограничения компилятора. И их нужно как-то расширить.
|
Почитайте про (s)printf - http://ru.wikipedia.org/wiki/Printf
Особенно про спецификатор точности. И в настройках компилятора посмотрите - там скорее всего есть настройка для (s)printf. Ее надо установить на максимальные возможности. Используйте double, а не float. У float 12 знаков после запятой вообще не получить.
|
|
|
|
15.04.2010, 15:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от diglook
|
Причем здесь FPU? мне не в гонки играть, и расчет не критичен по времени, критично разрешение расчетов, LPC 2478 ведь 32 битный, также как и Пеньтиум. Тут ограничения компилятора. И их нужно как-то расширить.
|
Пеньтиум имеет очень мощный встроеный FPU
|
|
|
|
15.04.2010, 15:30
|
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
благодаря вашим подсказкам, а также танцами с бубном :
long double h=999.0123456789023456;
sprintf(string, "%.12f", h);
результат 999.012345678902
параметр "%.12f" можно увеличить , но тогда необходимо уменьшать целую часть чила, иначе начинаются ограничения с округлениями и ошибками в младших разрядах.
Выводы: без переделок можно отобразить число которое поместится в 64 бита(здесь знак занимает 1 бит)
при h=9999.0123456789023456
sprintf(string, "%.16f", h);
результат 9999.0123456789013
т.е. в младших разрядах уже появляются ошибки.
|
|
|
|
15.04.2010, 16:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от diglook
|
т.е. в младших разрядах уже появляются ошибки.
|
Это же не ошибки (s)printf. Это особенности хранения переменных с плавающей запятой.
Можете придумать свой формат - 128 битный и написать функции для его обработки - сложение, вычитание, умножение и т.д. Си не в чем программиста не ограничивает.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:48.
|
|