2013-07-31 3 views
1

Я бегу вычислений на встроенном процессоре, который включает в себя операции с плавающей точкой, как это:вычисления с плавающей точкой только 2 цифры (не форматировать/округления 6 цифр после десятичной до 2)

a = (float)23/(float)3; // a = 7.666....7 

Это длинный вычисление, и мое приложение в порядке с определенной ошибкой округления; Я имею в виду 7.67 или 7.66, не имеет значения. Есть ли способ сократить время вычислений, затрачиваемое на вычисление float, или сообщить math.h на 2 цифры?

Любая идея, как это сделать?

PS: Теперь я знаю, что многие предложит использовать фиксированную точку, но у меня есть особые требования.

+0

Вы хотите, чтобы однораздельное вычисление выполнялось _faster? _ – aaronman

+0

У меня все происходит там. Не просто подразделение, у меня есть умножения, дополнения. – boffin

+1

Ваш код не имеет деления, из того, что вы отправили – aaronman

ответ

1

Вы ничего не можете сказать «math.h (в связи с этим); float не имеет опций точности.

Если вы хотите меньше вычислительных интенсивных вычислений, вы должны использовать другие типы или методы.

Вы уже упомянете о лучшем кандидате: фиксированная точка. Но, по неясным причинам, вы говорите, что не можете использовать его.

Другая идея состоит в том, чтобы увеличить ваши расчеты, например, на коэффициент 10 000, и сохранить все как int (или long er). Затем уменьшайте масштаб до float при необходимости. Но, конечно, это зависит от вашей проблемы, если вы можете это сделать.

+0

Спасибо за ваш ответ. – boffin

+0

Ну, я хотел бы услышать больше людей, рассказывающих мне свои впечатления :-) – boffin

+0

@boffin Спасибо! Это может помочь объяснить, почему вы не можете использовать фиксированную точку ;-) –

2

Точность определяется типом данных, обычные типы, такие как float и double, имеют фиксированную точность, которая не может быть изменена, но существуют библиотеки, такие как libfixmath, которые позволяют выполнять быстрые нецелые математические вычисления (в этом случае с использованием int32_t)

 Смежные вопросы

  • Нет связанных вопросов^_^