Учитывая два удвоения, мне нужно рассчитать процент и выразить их до двух знаков после запятой. Каков наиболее эффективный способ сделать это?
Например
x = 10.2476
y = 100
Я верну 10.25.
Эффективен, как при скорости выполнения. Он должен выражать x/y * 100 в 2 десятичных знаках.
Используйте целочисленное представление, если вам действительно нужно фиксированное представление точки и масштабируйте свои числа на 100. Таким образом, x = 10.2476 становится xi = 1025:
double x = 10.2476;
int xi = ( x + 0.005 ) * 100;
Во многих случаях представление с плавающей запятой не требуется, даже если используются числа меньше 1.
"выразить их до двух знаков после запятой" означает, что у вас есть только 2 цифры mantissa
на выходе.
10.2476-> 10
102.476 -> 1.0E+2, NOT 100!
0.00102476 -> 1.0E-3
Итак, работая с мантиссой, невозможно показать результат, не используя поплавки или парные.
В printf
ключи g и G задают количество значащих цифр. % 2g - ровно 2 десятичных знака.
Что касается подсчета, то десятичное деление не является проблемой (как + или -). Итак, просто разделите их, умножьте на 100, чтобы показать в процентах - никаких проблем.