Как эффективно рассчитать двойную-две десятичной точности в C / C ++?

0

Учитывая два удвоения, мне нужно рассчитать процент и выразить их до двух знаков после запятой. Каков наиболее эффективный способ сделать это?

Например

x = 10.2476
y = 100

Я верну 10.25.

Эффективен, как при скорости выполнения. Он должен выражать x/y * 100 в 2 десятичных знаках.

  • 0
    Что не так с тем, как ты уже это делаешь?
  • 1
    Ответ в round () для float в C ++ может быть полезен.
Показать ещё 3 комментария
Теги:
floating-point
performance
math

2 ответа

1

Используйте целочисленное представление, если вам действительно нужно фиксированное представление точки и масштабируйте свои числа на 100. Таким образом, x = 10.2476 становится xi = 1025:

double x = 10.2476;
int xi   = ( x + 0.005 ) * 100;

Во многих случаях представление с плавающей запятой не требуется, даже если используются числа меньше 1.

0

"выразить их до двух знаков после запятой" означает, что у вас есть только 2 цифры mantissa на выходе.

10.2476-> 10
102.476 -> 1.0E+2,  NOT 100!
0.00102476 -> 1.0E-3 

Итак, работая с мантиссой, невозможно показать результат, не используя поплавки или парные.

В printf ключи g и G задают количество значащих цифр. % 2g - ровно 2 десятичных знака.

Что касается подсчета, то десятичное деление не является проблемой (как + или -). Итак, просто разделите их, умножьте на 100, чтобы показать в процентах - никаких проблем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню